我有一个简单的rake任务,它通过ActiveRecord消耗相当多的数据。 (联系人有~47k行)
Contact.all.each do |contact| contact.update_attribute ... end
当我运行该任务时~400行得到更新然后任务卡住了。没有错误,也没有数据库活动...
如何正常运作?
答案 0 :(得分:0)
这正是find_in_batches的用途。它将同时消除内存中的大量ActiveRecord对象。
http://ryandaigle.com/articles/2009/2/23/what-s-new-in-edge-rails-batched-find