Pull to refresh

Новое в Rails: Грязные объекты

Reading time1 min
Views857
Сейчас можно проверить был ли модифицирован объект (ActiveRecord) и что именно было модифицировано.

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']
Tags:
Hubs:
Total votes 18: ↑9 and ↓90
Comments16

Articles