In Rails 3 gibt es mithilfe von activerecord eine Möglichkeit, das Feld : hidden für alle Datensätze, die eine Bedingung erfüllen , mit TRIE auf TRUE zu setzen.:condition => [ "phonenum = ?", some_phone_number ]
Wenn eine einzelne Abfrage dies nicht kann, was ist der optimale Ansatz?
Model.where("date_create < ?", a_certain_date).update_all(hidden: true)
Das update_all erlaubt keine Bedingungen in Rails 3. Sie können die Kombination von scope und update_all verwenden
Model.where(phonenum: some_phone_number).update_all(hidden: true)
Referenz: http://m.onkey.org/active-record-query-interface
quelle
options
Hash aufgenommen werden können. Dies beinhaltet nicht dasconditions
Argument aufupdate_all()
.Wenn Sie Rückrufe auslösen möchten:
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
Dann:
Model.where(phonenum: some_phone_number).update_each(hidden: true)
quelle