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_saverappel). Fe au lieu de update_attribute(:discount, 0.1) if amount > 100vous pourrait faire discount = 0.1 if amount > 100. update_attributeappelle savel'objet, ce qui n'est pas nécessaire dans ce cas, car l'instruction se trouve dans un before_saverappel et sera quand même enregistrée. J'espère que cela à du sens.
update_attributedéclaration dans unbefore_saverappel? Je ne vois pas de bonne raison à cela.