我有大量的 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/