2010-02-02 4 views
6

Ich tauche gerade in ActiveRecord ein und konnte keine Antwort auf meine Frage finden. Wenn ich die Attribute eines Objekts aktualisiere und dann save() aufruft ... speichert ActiveRecord nur dann in der Datenbank, wenn sich die neuen Werte von den alten Werten unterscheiden?Einfache ActiveRecord-Updates in Rails verstehen

Lassen Sie uns sagen, dass ich etwas tun:

thing_to_update = Thing.find_or_create_by_code(some_code) 
if thing_to_update.name != some_name 
    thing_to_update.update_attribute(:name, some_name) 
end 

Ich möchte nicht zusätzliche Anrufe an die DB tun, wenn ich nicht haben, weil ich möglicherweise eine Menge Objekte zu aktualisieren. Ich habe versucht, die Dokumente durchzulesen und nichts über den Vergleich neuer Werte mit den alten zu erwähnen. Fehle ich hier etwas?

Dank

Antwort

4

Active wird nicht Aktualisieren Sie Ihren Datensatz, wenn sich keine Attribute geändert haben. Sie können dies selbst überprüfen, indem Sie thing_to_update.save von der Konsole aus aufrufen und das Protokoll beobachten. ActiveRecord lädt den Datensatz, aber er versucht nicht, ihn zu aktualisieren.