2011-06-02 105 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

相关问题