应该:validates_each的未知错误

时间:2010-09-24 23:15:35

标签: ruby-on-rails ruby validation shoulda

我正在努力了解我的验证方法遇到了什么问题。

我安装了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

查看完整错误,违规模型(简化),测试用例和环境信息

非常感谢任何见解。

1 个答案:

答案 0 :(得分:2)

您的parse_name方法以此行开头:

return false unless name.is_a?(String)

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