Подтвердить что ты не робот

Каков атрибут метода ActiveModel "_was"?

При использовании автозаполнения в консоли я часто вижу "_was", перенесенный в мои атрибуты. Но я не могу найти какую-либо документацию или рекомендации по использованию. Что он делает и как его использовать?

Пример: user.fname имеет метод user.fname_was

Используя source_location, я отследил его до: active_model/attribute_methods.rb ", строка 296, но нет ничего конкретного.

4b9b3361

Ответ 1

Это часть ActiveModel:: Dirty Вы можете увидеть его здесь https://github.com/rails/rails/blob/af64ac4e5ce8406137d5520fa88e8f652ab703e9/activemodel/lib/active_model/dirty.rb#L146 Пример

person = Person.find_by_name('Uncle Bob')
person.changed?       # => false

Измените имя:

person.name = 'Bob'
person.changed?       # => true
person.name_changed?  # => true

#method _was return prev attribute value
person.name_was  # => 'Uncle Bob'  
person.name_change    # => ['Uncle Bob', 'Bob']
person.name = 'Bill'
person.name_change    # => ['Uncle Bob', 'Bill']