Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Les deux mettront à jour un objet sans avoir à dire explicitement à AR de mettre à jour.
L'API Rails dit:
pour update_attribute
Met à jour un seul attribut et sauvegarde l'enregistrement sans passer par la procédure de validation normale. Ceci est particulièrement utile pour les indicateurs booléens sur les enregistrements existants. La méthode régulière update_attribute dans Base est remplacée par ceci lorsque le module de validations est mélangé, ce qui est par défaut.
pour update_attributes
Met à jour tous les attributs du hachage transmis et enregistre l'enregistrement. Si l'objet n'est pas valide, l'enregistrement échouera et false sera renvoyé.
Donc, si je ne veux pas faire valider l'objet, je dois utiliser update_attribute. Que se passe-t-il si j'ai cette mise à jour sur un before_save?
Ma question est la suivante: update_attribute contourne également la sauvegarde avant ou juste la validation.
En outre, quelle est la syntaxe correcte pour passer un hachage à update_attributes ... consultez mon exemple en haut.
before_save
rappel). Fe au lieu de update_attribute(:discount, 0.1) if amount > 100
vous pourrait faire discount = 0.1 if amount > 100
. update_attribute
appelle save
l'objet, ce qui n'est pas nécessaire dans ce cas, car l'instruction se trouve dans un before_save
rappel et sera quand même enregistrée. J'espère que cela à du sens.
update_attribute
déclaration dans unbefore_save
rappel? Je ne vois pas de bonne raison à cela.