簡體   English   中英

Rails 3 + activerecord,為所有符合條件的記錄“批量更新”單個字段的最佳方法

[英]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)

參考: 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

然后:

Model.where(phonenum: some_phone_number).update_each(hidden: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM