[英]Rails 3 + activerecord, the best way to “mass update” a single field for all the records that meet a condition
在rails 3中,使用activerecord,是否有單一查詢方式將所有符合條件的記錄的:hidden字段設置為TRUE ...比如說: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)
如果要觸發回調:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.