1日1%成長するブログ

毎日成長するために仕事/プライベートで得た学びをアウトプットするブログです

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? }

便利。