我有一个模型Post
,有一个数组包含这样的post_id
:
hashes = [[post_id: 1, info: 'foo'],
[post_id: 3, info: 'bar'],
[post_id: 4, info: 'foobar']]
我可以通过此代码更新模型。
hashes.each do |h|
post = Post.find(h[:post_id])
next if post.nil?
post.update(info: h[:info])
end
但是数组大小通常超过 3000,如果可能的话,我想避免多次调用update
。如何在不使用循环的情况下实现此功能each
?
听起来您正在寻找更新记录 - 来自文档更新多个记录; 具有不同数据
的不同列您可以像以下示例一样操作:
people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } }
Person.update(people.keys, people.values)