如何通过包含post_id的数组一次更新多个模型



我有一个模型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)

最新更新