2010-09-24 19 views
0

我有一個可怕的時間試圖瞭解我的驗證方法有什麼問題。Shoulda:未知的錯誤與validates_each

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

任何有識之士得罪模型(簡體),測試用例和環境信息將不勝感激。

回答

2

parse_name方法下面這一行開始:

return false unless name.is_a?(String) 

這表明該值不是一個字符串(可能無)當你試圖驗證它。 validate_presence_of的shoulda匹配器將以零值對其進行測試,這就是爲什麼你會失敗。

+0

OMG你真棒!!!!!!! – Sukima 2010-09-25 15:44:57