Gibt es eine Möglichkeit, den ursprünglichen Wert eines ActiveRecord-Attributs abzurufen (= den Wert, der aus der Datenbank geladen wurde)?
Ich möchte so etwas in einem Beobachter
before_save object
do_something_with object.original_name
end
Die Aufgabe besteht darin, das Objekt beim Aktualisieren aus einer Hash-Tabelle zu entfernen (tatsächlich in einen anderen Schlüssel in der Tabelle zu verschieben).
quelle
self.context
:self.context_was
_was
.Für Schienen 5.1+
Das
_was
Anhängen ist in Rails 5.1 veraltet. Jetzt sollten Sie es anhängen_before_last_save
Etwas wie:
Gibt den Namenswert vor dem letzten Speichern in der Datenbank zurück (funktioniert zum Speichern und Erstellen).
Der Unterschied zwischen
_was
und_before_last_save
gemäß der Dokumentation:_was Quelle aus Dokumenten
_before_last_save Quelle aus Dokumenten
Sie können hier ein besseres Beispiel sehen
quelle
attribute_was
wurde zugunsten von abgelehntattribute_in_database
, währendattribute_before_last_save
es sich ab 5.1 um eine völlig neue Methode handelt, die in früheren Versionen von Rails keine Entsprechung hat. Quelle: github.com/rails/rails/pull/25337#issuecomment-225166796Die ActiveRecord-
attributes_before_type_cast
Methode gibt einen Hash von Attributen zurück, bevor Typumwandlung und Deserialisierung stattgefunden haben.quelle
Schauen Sie sich die Schienen-Dokumentation an
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
Model.attribute_was gab den vorherigen Wert zurück: D.
quelle