我如何使用 update_all
,如果我想用各种不同的值更新一列 300,000 条记录?
我想做的是:
Model.update_all(:column => [2,33,94,32]).where(:id => [22974,22975,22976,22977])
但不幸的是,这不起作用,对于 300,000 个条目,情况更糟。
最佳答案
来自 ActiveRecord#update documentation :
people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } }
Person.update(people.keys, people.values)
所以在你的情况下:
updates = {22974 => {column: 2}, 22975 => {column: 33}, 22976 => {column: 94}, 22977 => {column: 32}}
Model.update(updates.keys, updates.values)
编辑:刚刚查看了源代码,这也生成了 n 个 SQL 查询......所以可能不是最好的解决方案
关于ruby-on-rails-3 - 当所有记录都不同时,如何使用全部更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769361/