10 votes

Rails 3 valide la présence de plusieurs colonnes avec des messages personnalisés

Existe-t-il un moyen de spécifier de nombreuses validations comme celle-ci de manière plus concise ?

validates :col_a, :presence => {:message => 'col_a cannot be blank'}
validates :col_b, :presence => {:message => 'col_b cannot be blank'}
validates :col_c, :presence => {:message => 'col_c cannot be blank'}

Je me contenterais d'un message générique si je le devais.

27voto

Harish Shetty Points 38877

Vous pouvez donner plusieurs noms de champs à un validateur.

validates :col_a, :col_b, :col_c, :presence => true

Vous pouvez spécifier plusieurs validateurs dans la même ligne.

validates :col_a, :col_b, :col_c, :presence => true, :numericality => true

Le message d'erreur complet contiendra le nom du champ. Il n'est pas nécessaire d'ajouter le préfixe du nom du champ. Si vous voulez utiliser un message personnalisé, alors :

validates :col_a, :col_b, :col_c, :presence => {:message => "empty value found"}

2voto

Supportie Points 181

Vous pouvez utiliser

validates :col_a, presence: true
validates :col_b, presence: true
validates :col_c, presence: true

1voto

jbearden Points 899

Utilisez l'aide validates_presence_of.

validates_presence_of :col_a

EDITAR

Vous pourriez le nettoyer un peu avec validates_each. Il y a un exemple sur la page de l'API. http://api.rubyonrails.org/classes/ActiveModel/Validations.html

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X