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?
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. –