2011-06-02 137 views
2

我需要驗證一個字段是一個正值,並在lib/validations.rb中寫了一個小小的方法,並完成了它並將其添加到我的模型中。然而,現在我的rspec測試之一是失敗抱怨...自定義Rails驗證拋出未定義的方法錯誤

NoMethodError: undefined method '<' for nil:NilClass"

...當值是未定義的。我還在我的模型中添加了validates_presence_of :price,高於我的自定義validates_positive_or_zero方法。

我認爲validates_presence_of會先被調用,並且當該字段爲nil時,它不會運行進一步驗證。我是否必須更改我的validates_positive_or_zero方法以檢查字段是否存在以解決此問題?任何人都可以給我一些見解發生了什麼?

回答

0

所有校驗器運行,不論他們以這種方式定義的順序的錯誤,數組填滿帶有所有驗證錯誤,允許最終用戶修復所有錯誤,而不是一次一個。

所以,是的,你需要檢查該字段是否存在值,並且該值可以與數字進行比較。例如,你可能還需要考慮到值可以是數字以外的任何值 - 一個空白字符串將是一個可能的值 - 這也會導致錯誤。

但是,這一切學術,因爲斯蒂芬指出,只要使用validates_numericality_of :field, ::greater_than_or_equal_to => 0

相關問題