优化每个对象的字段更新(相同的值)

时间:2015-07-24 06:32:53

标签: ruby-on-rails

我有这个特殊的代码来更新每个记录的表格中的4列。

EmailSettings::PREFERENCE_NAMES.keys.each { |k| self.update_attribute(k, false) }

我认为每个密钥都会访问数据库。

有没有办法优化这段代码,以便它只会打到DB一次?

2 个答案:

答案 0 :(得分:0)

您可以使用update_all。例如。

fields = []
keys.each do |key|
  fields << "#{key.to_s} = false"
end

Table.scope.update_all(fields.join(','))

答案 1 :(得分:0)

EmailSettings::PREFERENCE_NAMES.keys.each { |k| self.attributes = {k => false} }
self.save