2009-09-08 7 views
0

Par exemple, si j'ai un utilisateur avec une adresse e-mail qui doit valider le presense et format:Combinant des erreurs de validation dans Rails

validates_presence_of :email_address, :message => "can't be blank" 
validates_format_of  :email_address, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i 

Si rien est entré, comment puis-je empêcher les messages d'erreur apparaissant? Je sais pour ce scénario que je n'aurais pas besoin du validates_presence_of, ceci est juste un exemple. Merci

Répondre

3

Dans cet exemple, vous pouvez ajouter :allow_blank => true au validates_format_of.

En général, je pense que cela dépend de la situation, le plus souvent, il peut être résolu avec l'utilisation intelligente de ActiveRecord validation options.

+0

Merci, cela fait l'affaire bien. Quand je pense à une situation où je voudrais plus que cela, je le posterai. – sebastyuiop

1

Vous pouvez également introduire une condition: si, par exemple:

validates_format_of :email_address, :with => EMAIL_REGEXP, :if => :email_address? 

Le email_address? La méthode devrait renvoyer true uniquement si ce champ a une valeur non vide. Cela peut être très pratique pour des situations comme celle-ci.

+1

Yeh ce serait plus relavent si le conditionnel pourrait utiliser un autre validates_foo ... validates_format_of: email_address,: avec => EMAIL_REGEXP,: if => {validates_whatever_of: email_address} Je sais que ça ne marchera pas, mais explique ma question initiale un peu plus clairement. – sebastyuiop

+1

Je pense que ce serait beaucoup mieux si les validations pouvaient être enchaînées, comme vous le dites, mais il n'y a pas encore de support pour cela. Ils courent tous, tout le temps, et chacun a une chance de présenter un message d'erreur. – tadman

Questions connexes