1
我能夠找到回調被啓動的順序here,但它並沒有說它是否是動態的(如果self.errors.any?停止回調鏈)。有誰知道是否只有在所有驗證都通過的情況下才調用before_create?或者有任何深入探討這個過程的鏈接。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
如果在任何時候回調,驗證,或保存失敗,則驗證的後面部分/保存週期都跑不了。
謝謝。這正是我需要的。猜猜我需要開始閱讀並停止瀏覽。 – John 2012-01-11 00:49:19