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']

