2013-02-11 13 views
13

before_saveの前にafter_validationコールバックが発生します。これらのコールバックの間に何が起こるのでしょうか?なぜ、他のものを選ぶのでしょうか?after_validationとbefore_saveの間に何が起こりますか?

+2

'after_validation'は、あなたが' '#valid呼び出す場合に呼び出されます、あなたが唯一のレコードの妥当性を確認したいが、まだ検証した後、何かを実行するインスタンスがあるかもしれないので。私の経験では、 'after_validation'を使う機会は一度もありませんでした。 – jvnill

+2

jvnillに加えて、有効でないオブジェクトは保存されません。したがって、無効なオブジェクトでsaveを呼び出すと、 'before_save'コールバックはトリガされませんが、' after_validation'はトリガされます。 – Max

答えて

12

新しいレコードであるかどうかによって、after_validation_on_updateまたはafter_validation_on_createがあります。

最大状態では、オブジェクトが有効でない場合にbefore_saveコールバックに達する前にチェーンが中断されるため、オブジェクトの有効性に関係なく何かが発生する必要がある場合はbefore_saveがその場所ではありません。参考のため

:? http://apidock.com/rails/ActiveRecord/Callbacks/after_validation_on_create

関連する問題