Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Beide aktualisieren ein Objekt, ohne AR explizit anweisen zu müssen, es zu aktualisieren.
Rails API sagt:
für update_attribute
Aktualisiert ein einzelnes Attribut und speichert den Datensatz, ohne das normale Validierungsverfahren durchlaufen zu haben. Dies ist besonders nützlich für boolesche Flags in vorhandenen Datensätzen. Die reguläre update_attribute-Methode in Base wird durch diese ersetzt, wenn das Validierungsmodul eingemischt wird, was standardmäßig der Fall ist.
für update_attributes
Aktualisiert alle Attribute des übergebenen Hash und speichert den Datensatz. Wenn das Objekt ungültig ist, schlägt das Speichern fehl und false wird zurückgegeben.
Wenn ich das Objekt nicht validieren lassen möchte, sollte ich update_attribute verwenden. Was passiert, wenn ich dieses Update auf einem before_save habe, wird es überlaufen?
Meine Frage ist, ob update_attribute auch das vor dem Speichern oder nur die Validierung umgeht.
Was ist die richtige Syntax, um einen Hash an update_attributes zu übergeben? Schauen Sie sich mein Beispiel oben an.
before_save
Rückrufs festgelegt werden). Fe anstelle von update_attribute(:discount, 0.1) if amount > 100
dir könnte tun discount = 0.1 if amount > 100
. update_attribute
ruft save
das Objekt auf, was in diesem Fall nicht erforderlich ist, da sich die Anweisung in einem before_save
Rückruf befindet und trotzdem gespeichert wird. Ich hoffe das ergibt Sinn.
update_attribute
Anweisung in einenbefore_save
Rückruf einfügen? Ich kann mir keinen guten Grund dafür vorstellen.