Railsの新機能:ダーティオブジェクト

これで、オブジェクト(ActiveRecord)が変更されたかどうか、および正確に変更されたものを確認できます。

article = Article.find(:最初)
article.changed? #=> false




個々の属性の変更を追跡します。

#attr_name_changed? アクセサー
article.title
#=>「タイトル」
article.title = "新しいタイトル"
article.title_changed?
#=> true


古い属性値を取得します。

#attr_name_wasアクセサー
article.title_was
#=>「タイトル」


古い値と新しい値を取得します。

#attr_name_changeアクセサー
article.title_change
#=> [「タイトル」、「新しいタイトル」]


変更された属性の配列を取得します。

article.changed#=> ['title']

変更のハッシュを取得します。

article.changes
#=> {'title' => [“ Title”、“ New Title”]}


オブジェクトの動作は次のとおりです。

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


ただし、attribute =()以外の属性値を変更する場合、これについてモデルに警告する必要があります。

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

Source: https://habr.com/ru/post/J22825/


All Articles