Главная страница

Edge: Грязные объекты

16:44, 2008-04-02 [ ru ]

Сейчас можно проверить был ли модифицирован объект (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']

Нет комментариев.

Войдите с помощью OpenID чтобы опубликовать комментарий.
Strio