есть ли способ получить исходное значение атрибута ActiveRecord (= значение, которое было загружено из базы данных)?
Я хочу что-то подобное в наблюдателе
before_save object
do_something_with object.original_name
end
Задача - удалить объект из хеш-таблицы (фактически переместить его на другой ключ в таблице) при обновлении.
ruby-on-rails
activerecord
Леонид Шевцов
источник
источник
self.context
:self.context_was
_was
.Для рельсов 5.1+
Добавление
_was
в rails 5.1 устарело, теперь вы должны добавить_before_last_save
Что-то вроде:
Вернет значение имени перед вашим последним сохранением в базе данных (работает для сохранения и создания)
. Разница между
_was
и_before_last_save
согласно документации:_был источник из документов
_before_last_save исходный код из документов
Вы можете увидеть лучший пример здесь
источник
attribute_was
устарел в пользуattribute_in_database
, тогдаattribute_before_last_save
как это совершенно новый метод начиная с версии 5.1, не имеющий эквивалента в более ранних версиях Rails. Источник: github.com/rails/rails/pull/25337#issuecomment-225166796attributes_before_type_cast
Метод ActiveRecord возвращает хэш атрибутов до того, как произойдет приведение типов и десериализация.источник
Взгляните на документацию по рельсам
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
Model.attribute_was возвращает предыдущее значение: D
источник