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

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

Время на прочтение1 мин
Количество просмотров877
Сейчас можно проверить был ли модифицирован объект (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']
Теги:
Хабы:
Всего голосов 18: ↑9 и ↓90
Комментарии16

Публикации

Истории

Работа

Ruby on Rails
13 вакансий
Программист Ruby
15 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн