2012-01-18 2 views
1

J'essaie de valider un modèle en utilisant: presence => true sur certains champs, mais le modèle est renvoyé comme valide même si ces champs sont nuls. Voici les validations de mon modèle Replay:Pourquoi ces validations de présence échouent

validate :match_id, :presence => true 
validate :replay_url, :presence => true 
validate :uploader_id, :presence => true 

Si j'ouvre la console et tapez ce qui suit, vous pouvez voir ce que je veux dire:

1.9.3p0 :001 > r = Replay.new 
=> #<Replay id: nil, match_id: nil, replay_url: nil, created_at: nil, updated_at: nil, uploader_id: nil> 
1.9.3p0 :002 > r.valid? 
=> true 

Est-ce que quelqu'un sait pourquoi est-ce?

+0

Le symbole que vous donnez à 'validate' est appelé et il est prévu d'ajouter des erreurs via' errors.add' pour indiquer que quelque chose ne va pas, la valeur de retour est ignoré. Vous aurez une méthode 'match_id' à travers AR donc' validate: match_id' sera exécuté même si cela ne fonctionnera pas comme prévu. Les réponses ont raison, mais j'ai compris que vous aimeriez savoir pourquoi votre code incorrect a échoué en silence. –

Répondre

1

* validate s *

validates :match_id, :presence => true 
validates :replay_url, :presence => true 
validates :uploader_id, :presence => true 
Questions connexes