我能够找到回调被启动的顺序here,但它没有说明它是否是动态的(如果是self.errors.any?停止回调链)。有没有人知道只有在所有验证通过后才调用before_create?或者有任何链接深入了解这个过程。
答案 0 :(得分:2)
您最初的预感是正确的。只有在验证通过时才会调用before_create
。通过查看回调生命周期,可以在原始链接中轻松观察到这一点:
before_validation
. <----- validations happen here
after_validation
before_save
before_create
around_create <--- save happens in here
after_create
after_save
如果在任何时候回调,验证或保存失败,则不会运行验证/保存周期的后续部分。