before_create是否被调用,如果在它之前的验证中有错误?

问题描述:

我能够找到回调被启动的顺序here,但它并没有说它是否是动态的(如果self.errors.any?停止回调链)。有谁知道是否只有在所有验证都通过的情况下才调用before_create?或者有任何深入探讨这个过程的链接。before_create是否被调用,如果在它之前的验证中有错误?

您的初始预感是正确的。仅当验证通过时才会调用before_create。这是很容易在你原来的链路上观察到通过看回调的生命周期:

before_validation 
. <----- validations happen here 
after_validation 
before_save 
before_create 
around_create <--- save happens in here 
after_create 
after_save 

如果在任何时候回调,验证,或保存失败,则验证的后面部分/保存周期都跑不了。

+0

谢谢。这正是我需要的。猜猜我需要开始阅读并停止浏览。 – John 2012-01-11 00:49:19