Dans rails 3, en utilisant activerecord, existe-t-il un moyen de requête unique pour définir le champ : hidden sur TRUE pour tous les enregistrements qui remplissent une condition … par exemple :condition => [ "phonenum = ?", some_phone_number ]
Si une seule requête ne peut pas le faire, quelle est l’approche optimale?
Utilisez update_all avec le second paramètre facultatif pour la condition:
Model.update_all({ hidden: true }, { phonenum: some_phone_number})
Update_all n’autorise pas les conditions dans les rails 3. Vous pouvez utiliser une combinaison de scope et update_all
Model.where(phonenum: some_phone_number).update_all(hidden: true)
Si vous souhaitez déclencher des rappels:
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
Alors:
Model.where(phonenum: some_phone_number).update_each(hidden: true)