Edge Rails, Rails

[Edge Rails] ARオブジェクトの状態を知る: Dirty Objects

2008/04/02

Ryan’s Scraps / What’s New in Edge Rails: Dirty Objects の抄訳です。

Active Record オブジェクトの状態をトラッキングできる Dirty Objects が Edge Rails に反映されました。

これは Actvie Record オブジェクトの操作中に、過去の値の参照ができるもので、下のようにして使います。

article = Article.find(:first)
article.changed?  #=> false / 変更されているかを確認
 
# 属性の値の変化を attr_name_changed? で確認
article.title  #=> "Title"
article.title = "New Title"
article.title_changed? #=> true
 
# attr_name_was で前に入ってた値を確認
article.title_was  #=> "Title"
 
# attr_name_change で今と前の値を確認
article.title_change  #=> ["Title", "New Title"]

また、どの属性が変化しているのかも下記のようにして確認することができます(前例に引き続き)。

# 変更された属性の一覧を取得
article.changed  #=> ['title']
 
# 変更された属性の今の値と前の値をハッシュで取得
article.changes  #=> { 'title' => ["Title", "New Title"] }

これらの値は、DBに保存されているわけではないので、一度保存するとクリアされてます。

article.changed?  #=> true
article.save  #=> true
article.changed?  #=> false

もし値の代入以外で属性を変更するときは、attr_name_will_change! を使って、ARオブジェクトが変更することを示しておきます。

article = Article.find(:first)
article.title_will_change!
article.title.upcase!
article.title_change  #=> ['Title', 'TITLE']

related posts


tags

,


have your say

Add your comment below, or trackback from your own site. Subscribe to these comments.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">

:

:


« RadRails1.0で日本語が使えない
» [Edge Rails] 部分的なアップデート: Partial Updates