ruby-on-rails - 批量销毁 Rails 事件记录中的所有内容

标签 ruby-on-rails activerecord

我有大量的 Product 对象,它们都有一个关联的“变体”。我不能只是delete_all产品,因为我也需要删除关联。

当我使用 Products.all.destroy_all它卡住并且没有完成销毁所有产品,然后它迫使我取消它并回滚它。

这个问题有方法解决吗?

最佳答案

对于大量对象及其关联的“变体”,您必须使用 destroy_all。

Product.all.destroy_all

由于 destroy_all 实际上加载了整个关系,然后一个一个地迭代销毁记录,你可以很容易地破坏你的内存垫圈。所以让我们在默认情况下做正确的事情,默认情况下以 100 的批次进行这项工作,并允许您像这样指定批次大小:destroy_all(batch_size: 100).
Product.destroy_all(batch_size: 100)

或者

您可以使用 in_batches
Product.in_batches(of: 200).destroy_all

关于ruby-on-rails - 批量销毁 Rails 事件记录中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655004/

相关文章:

ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure'

ruby-on-rails - 在表单嵌套模型中销毁记录而不是更新

javascript - AngularJS 在 django 中开始加载部分而不是在需要时加载?

Mysql2::错误: 'ctr' 中的未知列 'having clause'

ruby - Rails3 和 Datamapper

ruby-on-rails - 基于键/值存储在 Formtastic 中创建动态表单

php - 未捕获的 ActiveRecord\UndefinedPropertyException codeigniter

ruby-on-rails - 你能做一个 :order in ruby after a find?

ruby - 创建 : too many command line arguments

ruby - 如何在 Rails 3 中禁用 ActiveRecord 回调?