jpw*_*ynn 75 activerecord ruby-on-rails
在轨道3,使用ActiveRecord,是有一个单一查询的方式来设定:隐藏字段,TRUE对符合条件......也就是说,例如所有记录,:condition => [ "phonenum = ?", some_phone_number ]
如果单个查询无法做到,那么最佳方法是什么?
Dog*_*ert 86
将update_all与条件的可选第二个参数一起使用:
Model.update_all({ hidden: true }, { phonenum: some_phone_number})
Run Code Online (Sandbox Code Playgroud)
Dee*_*k N 86
update_all不允许rails 3中的条件.您可以使用scope和update_all的组合
Model.where(phonenum: some_phone_number).update_all(hidden: true)
Run Code Online (Sandbox Code Playgroud)
参考:http://m.onkey.org/active-record-query-interface
如果要触发回调:
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
Run Code Online (Sandbox Code Playgroud)
然后:
Model.where(phonenum: some_phone_number).update_each(hidden: true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46768 次 |
| 最近记录: |