我有这个特殊的代码来更新每个记录的表格中的4列。
EmailSettings::PREFERENCE_NAMES.keys.each { |k| self.update_attribute(k, false) }
我认为每个密钥都会访问数据库。
有没有办法优化这段代码,以便它只会打到DB一次?
答案 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