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)