0

検証方法で問題が発生していることを理解しようとして、ひどい時間を過ごしています。

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で、完全なエラー、問題のあるモデル(簡略化)、テストケース、および環境情報を確認できます。

任意の洞察をいただければ幸いです。

4

1 に答える 1

2

メソッドparse_nameは次の行から始まります。

return false unless name.is_a?(String)

これは、値を検証しようとしているときに、値が文字列ではない(おそらくnil)ことを示します。のshouldaマッチャーvalidate_presence_ofはnil値でテストするため、失敗します。

于 2010-09-24T23:39:05.707 に答える