before_createの実行タイミング(callbackのタイミング)
Ruby on Railsの勉強を、ということでRailsチュートリアルをやっていたが、はまったポイントがあったので備忘録。
before_save
がbefore_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が呼ばれるということで。