ruby-on-rails-3 - 事件记录: delete_all with limit

标签 ruby-on-rails-3 activerecord

尝试获得关于是否可以将 delete_all 限制为 X 条记录的明确答案。

我正在尝试以下操作:

Model.where(:account_id => account).order(:id).limit(1000).delete_all

但它似乎不遵守限制,而是删除所有 :account_id => account 的模型。

我希望它会生成以下内容:

delete from model where account_id = ? order by id limit 1000

使用 destroy_all 时这似乎工作正常,但我想批量删除。

最佳答案

这个对我(和我的需求)也很有效

Model.connection.exec_delete('DELETE FROM models ORDER BY id LIMIT 10000', 'DELETE', [])

我知道这可能看起来有点麻烦,但它会返回受影响的行,并且还会通过 Rails 记录器记录查询。 ;)

关于ruby-on-rails-3 - 事件记录: delete_all with limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176771/

相关文章:

ruby-on-rails-3 - rails3 gem : acts_as_something

ruby-on-rails - 如何覆盖 gem 中 activerecord 中的验证调用?

ruby-on-rails - 如何使用 activerecord 获取最后 N 条记录?

mysql - 类型错误 : nil is not a symbol

ruby-on-rails-4 - 如何在Rails中将数据库列从整数迁移到bigint?

postgresql - 使用 activerecord-postgis-adapter 并且点未转换为球形

ruby-on-rails-3 - 如何在 Heroku 应用程序上处理大文件?

ruby - 添加和删​​除引用的 Rails 迁移

ruby-on-rails - 删除链接在 Rails 3 View 中发送 "Get"而不是 "Delete"

ruby-on-rails - Rspec渲染文本