【问题标题】:Shoulda: unknown error with validates_each应该:validates_each 出现未知错误
【发布时间】:2010-09-24 23:15:34
【问题描述】:

我很难理解我的验证方法有什么问题。

我安装了 shoulda,但当我尝试使用它时,它会出现一个奇怪的未定义方法 NoMethodError: undefined method '[]' for false:FalseClass,这很奇怪。

我把它缩小到这段有问题的代码:

validates_each :name do |record, attr, value|
  name_hash = self.parse_name(value)
  record.errors.add attr, 'must have a first and last name' if
    ( name_hash[:first_name].nil? || name_hash[:last_name].nil? )
end

您可以在gist-596202 看到完整的错误、违规模型(简化)、测试用例和环境信息

任何见解将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby validation shoulda


    【解决方案1】:

    您的parse_name 方法以这一行开头:

    return false unless name.is_a?(String)
    

    这表明当您尝试验证该值时,该值不是字符串(可能为 nil)。 validate_presence_of 的 shoulda 匹配器将使用 nil 值对其进行测试,这就是您失败的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多