Rails

attr_changed?メソッドはfromとtoオプションで変化を指定できる

More than 3 years have passed since last update.

#attr_changed? メソッドでその属性が変化したかどうか知ることができますが、さらにfromとtoオプションを使うとその値の変化を明示的に指定できます。

例えば Article モデルがいて、public属性が false から true になったら #publish メソッドを実行したい場合はこんな感じで書くことができます。

class Article < ActiveRecord::Base

after_update :publish, if: proc { public_changed? from: false, to: true }

def publish
# public属性がfalseからtrueになった時に実行される
end
end

今まで律儀に

public_changed? && !public_was && self.public

みたいに書いてた...


参考

ActiveModel::Dirty