Сейчас можно проверить был ли модифицирован объект (ActiveRecord) и что именно было модифицировано.
Отслеживать изменение отдельных атрибутов:
Получить старое значение атрибута:
Получить старое и новое значения:
Получить массив измененных атрибутов:
Получить хэш изменений:
Вот как ведет себя объект:
Однако если вы модифицируете значение атрибута вне attribute=(), вам придется предупредить об этом модель:
article = Article.find(:first)
article.changed? #=> false
Отслеживать изменение отдельных атрибутов:
# attr_name_changed? accessor
article.title
#=> «Заголовок»
article.title = «Новый заголовок»
article.title_changed?
#=> true
Получить старое значение атрибута:
# attr_name_was accessor
article.title_was
#=> «Заголовок»
Получить старое и новое значения:
# attr_name_change accessor
article.title_change
#=> [«Заголовок», «Новый заголовок»]
Получить массив измененных атрибутов:
article.changed #=> ['title']
Получить хэш изменений:
article.changes
#=> { 'title' => [«Заголовок», «Новый заголовок»] }
Вот как ведет себя объект:
article.changed?
#=> true
article.save
#=> true
article.changed?
#=> false
Однако если вы модифицируете значение атрибута вне attribute=(), вам придется предупредить об этом модель:
article = Article.find(:first)
article.title_will_change!
article.title.upcase!
article.title_change #=> ['Title', 'TITLE']