Antes de los rieles 5.1
Agregar _was
su atributo le dará el valor anterior.
Para rieles 5.1+
Copiado de la respuesta de Lucas Andrade a continuación : https://stackoverflow.com/a/50973808/9359123
Agregar _was
está obsoleto en rails 5.1, ahora debería agregar_before_last_save
Algo como:
before_save object
do_something_with object.name_before_last_save
end
Devolverá el valor del nombre antes de su último guardado en la base de datos (funciona para guardar y crear)
La diferencia entre _was
y de _before_last_save
acuerdo con la documentación:
_fue fuente de documentos
def attribute_was(attr)
attribute_changed?(attr) ? changed_attributes[attr] : __send__(attr)
end
_before_last_save fuente de documentos
def attribute_before_last_save(attr_name)
mutations_before_last_save.original_value(attr_name)
end
self.context
:self.context_was
_was
.Para rieles 5.1+
Agregar
_was
está obsoleto en rails 5.1, ahora debería agregar_before_last_save
Algo como:
Devolverá el valor del nombre antes de su último guardado en la base de datos (funciona para guardar y crear)
La diferencia entre
_was
y de_before_last_save
acuerdo con la documentación:_fue fuente de documentos
_before_last_save fuente de documentos
Puedes ver un mejor ejemplo aquí.
fuente
attribute_was
ha quedado obsoleto en favor deattribute_in_database
, mientras queattribute_before_last_save
es un método completamente nuevo a partir de la versión 5.1 que no tiene equivalente en versiones anteriores de Rails. Fuente: github.com/rails/rails/pull/25337#issuecomment-225166796ActiveRecord's
attributes_before_type_cast
método devuelve un hash de atributos antes de que se produzcan el encasillado y la deserialización.fuente
Eche un vistazo a la documentación de rieles
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
Model.attribute_was devuelve el valor anterior: D
fuente