ご存知のように、before_save
コールバックはコールバックの前に実行されbefore_create
ます。
したがって、他のコールバック(自動保存コールバックなど)に関連してコールバックメソッドが適切なタイミングで実行されるようにするbefore_save :method, :on => :create
代わりに、inを使用する方がよいと提案する人もいます。before_create
たとえば、このPivotalLabsのブログ投稿とこのStackOverflowの回答を参照してください。
しかし、私が知る限り、この:on => :create
オプションはコールバックに対して望ましい効果を達成していませんbefore_save
。つまり、作成かどうかに関係なく、保存ごとにコールバックが実行されます。
ただし、この:on => :create
オプションはbefore_validation
コールバックには有効であるように見えます。
誰かがのため:on => :create
に働くことになっているのかどうかを確認できbefore_save
ますか?以前のバージョンのRailsで機能し、現在は壊れていますか、それとも前述のリンクは単に間違っていますか?
が有効でないと仮定すると:on => :create
、次のことが許容されますか、および/またはより良い方法がありますか?
before_save :callback_method, :if => :new_record?
ありがとうございました。