Rails

callbackに登録されているメソッド一覧を確認する方法

More than 1 year has passed since last update.


よくある問題

モデルのコードが多い場合やconcernをいっぱい使っていると、callbackの処理を追っかけるのも一苦労。

だからと言って、after_ や before_ のようなキーワードで検索したりすのもの面倒。

そんなお困りのあなたに!


解決策

rails consoleで確認できます。

例えば、Entryモデルの after_save に登録されている callback 一覧を確認したい場合

$ bundle exec rails console

>> Entry._save_callbacks.select { |cb| cb.kind.eql? :after }.map { |cb| puts cb.filter }

update_search_text
update_activity

update_search_text と update_activity というメソッドが after_save のときに呼び出されていることがわかります。

同じような感じで before_save のものを確認したい場合は、モデル名の後とselectの中のフレーズを少し変更すればOK

Entry._save_callbacks.select { |cb| cb.kind.eql? :before }.map { |cb| puts cb.filter }

さらに after_update を確認したいなら

Entry._update_callbacks.select { |cb| cb.kind.eql? :after }.map { |cb| puts cb.filter }

こんな感じで簡単に調べることができます。

詳細はこちらでチェック!

Active Record Callbacks