Новое в 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']
Tags:edge railsrailsruby
Hubs: Ruby
0
662 1
Comments 16

Popular right now

Программист Ruby on Rails (mid, mid+)
from 101,010 to 160,000 ₽TIQUMRemote job
Ruby on Rails - Middle - Public API
from 150,000 to 180,000 ₽igooodsСанкт-Петербург
Senior Developer Ruby on Rails
from 140,000 to 170,000 ₽EdsteinRemote job
Middle/Junior Developer Ruby on Rails
from 110,000 to 130,000 ₽EdsteinRemote job
Lead Ruby on Rails developer
from 200,000 to 280,000 ₽ikitlabRemote job