2010-09-24 22 views
0

J'ayant un temps terrible essayer de comprendre ce que ma méthode de validation des problèmes avec.Shoulda: erreur inconnue avec validates_each

J'ai installé shoulda et quand j'ai essayé de l'utiliser, il a une erreur avec une étrange méthode non définie NoMethodError: undefined method '[]' for false:FalseClass qui est très étrange.

je réduit à ce morceau de code incriminé:

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 

Vous pouvez voir l'erreur complète, le modèle offensant (simplifié), le cas de test et les informations d'environnement à gist-596202

Toute idée serait grandement apprécié.

Répondre

2

Votre méthode parse_name commence par cette ligne:

return false unless name.is_a?(String) 

Cela semble indiquer que la valeur est une chaîne (probablement nulle) lorsque vous essayez de le valider. Le Shoulda matcher pour validate_presence_of va tester avec une valeur nulle, ce qui est la raison pour laquelle vous obtenez l'échec.

+0

OMG Vous êtes génial !!!!!!! – Sukima