2015-06-09 16 views
-1

具體地說http://guides.rubyonrails.org/active_record_validations.html#custom-methods做rails自定義驗證暫停保存?

我覺得這個問題沒有被正確回答/記錄。如果你看看示例代碼 - >它所做的只是調用errors.add,根據這個http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-add 除了將錯誤信息添加到錯誤之外並沒有其他更多的功能。

經過測試,它確實停止了保存,但我會將此留在這裏供人們查找。

+1

如果有錯誤,那麼模型無效。 –

回答

-1

如果對象中的字段存在錯誤(我們稱之爲「x」),則x.valid?爲false。此有效性檢查失敗會阻止對象保存。如果您致電x.save(或create(x_params)),它將返回錯誤,或者如果您致電x.save!(或create!(x_params)),則會產生錯誤。在創建事務中的多個記錄的上下文中,提升錯誤尤其有用,因爲這會使您退出事務並進入您的救援塊(假設您允許這樣做)。

+0

我添加了一次錯誤,並能夠繼續使用Object.update(屬性)更新對象。即使對象有錯誤,更新方法仍然會通過。 – Edward

1

僅當對象有效時纔將對象保存到數據庫。使用'errors.add(:attribute_name,error_message)'將錯誤與對象關聯使其無效,導致對象不被保存。