在rails 3中,使用activerecord,对于符合条件的所有记录,是否有单一查询方式将:隐藏字段设置为 TRUE ...说例如,:condition => [ "phonenum = ?", some_phone_number ]
如果单个查询无法做到,那么最佳方法是什么?
答案 0 :(得分:87)
使用update_all和条件的可选第二个参数:
Model.update_all({ hidden: true }, { phonenum: some_phone_number})
答案 1 :(得分:86)
update_all不允许rails 3中的条件。您可以使用scope和update_all的组合
Model.where(phonenum: some_phone_number).update_all(hidden: true)
答案 2 :(得分:5)
如果您想触发回调:
class ActiveRecord::Base
def self.update_each(updates)
find_each { |model| model.update(updates) }
end
def self.update_each!(updates)
find_each { |model| model.update!(updates) }
end
end
然后:
Model.where(phonenum: some_phone_number).update_each(hidden: true)