railsガイドを読んでいて理解できない箇所がありました。
引用
Active Recordで利用可能なコールバックの一覧を以下に示します。これらのコールバックは、実際の操作中に呼び出される順序に並んでいます。
before_validation
after_validation
before_save ←←
around_save
before_create ←←
around_create
...
...
...
(詳しくはリンク内容)
自分の認識
上記では、before_createより前にbefore_saveが呼び出されると記載されています。(矢印部分)
しかし、私はここが理解できません。
自分の認識では、createとは「インスタンスが作成され、dbに保存される」ことだと思っています。
なので、モデルにbefore_createを記述した場合、それが実行されるタイミングは
def create #ここでbefore_createが実行される。 @u = User.new(...) @u.save ... ... end
という認識でいます。
また、saveとは「インスタンスがdbに保存される」ことだと思っています。
なので、モデルにbefore_saveを記述した場合、それが実行されるタイミングは
def create @u = User.new(...) #ここでbefore_saveが実行される @u.save ... ... end
という認識でいます。
しかし仮に、モデルにbefore_saveとbefore_create両方を記述すると、
def create #ここでbefore_createが実行される @u = User.new(...) #ここでbefore_saveが実行される @u.save ... ... end
になると認識しています。
従って、仮にbefore_createとbefore_saveが記述されている場合、呼び出される順序は
before_createの次にbefore_saveが正しい順序になるのではと思ってしまいます。
私の認識違いを正していただきたいです。詳しい方がいましたら、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。