【问题标题】:Custom Rails Validation throwing undefined method error自定义 Rails 验证抛出未定义的方法错误
【发布时间】:2011-06-02 05:08:32
【问题描述】:

我需要验证一个字段是否为正值,并在 lib/validations.rb 中编写了一个小方法来完成此操作并将其添加到我的模型中。但是,现在我的一项 rspec 测试未能通过抱怨...

NoMethodError: 未定义方法 '

...当值未定义时。我还在我的模型中添加了validates_presence_of :price,在我的自定义validates_positive_or_zero 方法之上。

我认为validates_presence_of 会首先被调用,当字段为nil 时,它不会运行进一步的验证。我是否必须更改我的 validates_positive_or_zero 方法以检查该字段是否存在以解决此问题?谁能告诉我发生了什么?

【问题讨论】:

    标签: ruby-on-rails ruby validation


    【解决方案1】:

    【讨论】:

    • 谢谢!我不知道我怎么忽略了这一点。
    【解决方案2】:

    无论定义它们的顺序如何,所有验证器都会运行。这样,错误数组就会填充所有验证错误,从而允许最终用户修复所有错误,而不是一次修复一个错误。

    所以是的,您需要检查该字段是否存在值,并且该值可以与数字进行比较。例如,你可能还需要考虑到该值可以是数字以外的任何值 - 一个空白字符串可能是一个值 - 这也会导致错误。

    但这都是学术性的,因为正如斯蒂芬指出的那样,只需使用validates_numericality_of :field, ::greater_than_or_equal_to => 0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多