Railsのコールバックをifで絞りつつ引数を指定する方法
before_xxx, after_xxxといったActiveRecordのコールバックを特定の条件で絞り込みしたい時は、 ifオプションを使うのが楽。
after_update :update_fuga, if: -> { saved_change_to_hoge_column? }
ただこれだとコールバックに引数を指定したい時に上手くいかない。 そういった場合は以下のようにラムダ式の中で自分でrubyのコードを書いてしまえばいい。
after_update -> { update_fuga("fuga") if saved_change_to_hoge_column? }
便利。