Rails 3 + activerecord是为所有符合条件的logging“大量更新”单个字段的最佳方法
在rails 3中,使用activerecord,是否有一个单一的查询方式来设置:隐藏字段为TRUE满足条件的所有logging…例如,说:condition => [ "phonenum = ?", some_phone_number ]
如果一个查询不能完成,那么最佳的方法是什么?
对条件使用update_all和可选的第二个参数:
Model.update_all({ hidden: true }, { phonenum: some_phone_number})
update_all不允许rails 3中的条件。您可以使用scope和update_all的组合
Model.where(phonenum: some_phone_number).update_all(hidden: true)
参考: http : //m.onkey.org/active-record-query-interface
如果你想触发callback:
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)