彷徨う園児ニア

主に備忘録。

before_createの実行タイミング(callbackのタイミング)

Ruby on Railsの勉強を、ということでRailsチュートリアルをやっていたが、はまったポイントがあったので備忘録。

before_savebefore_createよりも先に実行される

Userモデルを作成して実行する場合に、英語の意味的にcreateしてsaveするんだからbefore_create -> before_saveでしょーって勘違いしていて、ちょっとつまった。
最初はnewのタイミングで呼ばれると思っていたが、railsリファレンスにもある通り、モデルのcreateメソッドというのは、モデルオブジェクトを「生成して保存」するという行為のため、newしてsaveするのがcreateということ。よってbefore_save -> before_createの順番で行われる。

順番的には、
before_validation
after_validation
before_save
before_create or before_update
after_create or after_update
after_save
after_commit
モデルのnew_record?がtrueの時はcreate, falseのときはupdateが呼ばれるということで。