Dans Rails 3, en utilisant activerecord, existe-t-il une méthode à requête unique pour définir le champ : caché 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 IS l'approche optimale?
Utilisez pdate_all avec le deuxième paramètre facultatif pour la condition:
Model.update_all({ hidden: true }, { phonenum: some_phone_number})
Update_all n'autorise pas les conditions dans Rails 3. Vous pouvez utiliser la 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
Ensuite:
Model.where(phonenum: some_phone_number).update_each(hidden: true)