Открыть список
Как стать автором
Обновить

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

Ruby
Сейчас можно проверить был ли модифицирован объект (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']
Теги:edge railsrailsruby
Хабы: Ruby
Всего голосов 18: ↑9 и ↓9 0
Просмотры663

Похожие публикации

Rails-программист
31 мая 202156 250 ₽Хекслет
Специализация Data Science
12 мая 2021114 000 ₽SkillFactory
Профессия Project Manager
13 мая 2021112 000 ₽Нетология
SMM-менеджер
13 мая 2021Цена по запросуGeekBrains

Лучшие публикации за сутки