呼ばれる順番
順番は以下の通り
before_validation
after_validation
before_save
around_save
before_create
/ before_update
around_create
/ around_update
after_create
/ after_update
after_save
after_commit
/ after_rollback
それぞれのコールバックが呼ばれるタイミング
before_validation
タイミング:バリデーションが行われる直前
用途:バリデーション前に属性値を微調整したい場合など
after_validation
タイミング:バリデーションが行われた直後
用途:バリデーションが成功したか否かにかかわらず実行したい処理がある場合
before_save
タイミング:バリデーションに成功し、オブジェクトがDBに保存される直前
用途:INSERTとUPDATEのどちらでも実行したい処理がある場合
around_save
タイミング:DBが更新されている最中
before_create/before_update
タイミング:before_saveの後
用途:INSERTの場合のみ、あるいはUPDATEの場合のみ実行したい処理がある場合
around_create/around_update
タイミング:DBが更新されている最中
用途:INSERTとUPDATEのどちらでも実行したい処理がある場合
after_create/after_update
タイミング:オブジェクトが保存された直後
用途:INSERTの場合のみ、あるいはUPDATEの場合のみ実行したい処理がある場合
after_save
タイミング:after_create/after_updateの直後
用途:保存されたオブジェクトの関連オブジェクトを操作したい場合など
after_commit
タイミング:after_saveの後(DBにCOMMITされた後)
after_rollback
タイミング:バリデーションエラーやSQL実行時にエラーが発生した後
用途:トランザクションが失敗した理由をログ出力したい時など