34 votes

Ruby on Rails - Valider un coût

Quelle est la meilleure façon de valider une entrée coût / prix par un utilisateur, règles de validation ci-dessous:

  • Exemples de formats autorisés .23, .2, 1.23, 0.25, 5, 6.3 (maximum de deux chiffres après le point décimal)
  • Valeur minimale de 0,01
  • Valeur maximale de 9,99

69voto

rwilliams Points 11715

Vérifiez le prix et vérifiez le format

 #rails 3    
validates :price, :format => { :with => /\A\d+(?:\.\d{0,2})?\z/ }, :numericality => {:greater_than => 0, :less_than => 10}

#rails 2
validates_numericality_of :price, :greater_than => 0, :less_than => 10    
validates_format_of :price, :with => /\A\d+(?:\.\d{0,2})?\z/
 

4voto

jpemberthy Points 4063

Pour le côté client validations, vous pouvez utiliser un plugin jQuery comme cette un qui vous permet de définir différents formats valides pour une entrée donnée.

Pour le côté serveur, les validations et, conformément à cette question/réponse, peut-être devriez-vous utiliser un decimal colonne price dans lequel vous pouvez définir des valeurs pour precision et scale, scale résout les deux chiffres après le point décimal de restriction.

Ensuite, pour valider la numericality, la valeur minimale et maximale, vous pouvez utiliser la méthode de validation:

validates_numericality_of :price, :greater_than => 0, :less_than => 10

2voto

Shreyas Points 4871

Vous pouvez créer des validations personnalisées, disons par exemple le deuxième cas:

 validate :price_has_to_be_greater_than_minimum

def price_has_to_be_greater_than_minimum
  errors.add(:price, "price has to be greater than 0.01") if
  !price.blank? and price > 0.01
end
 

Plus d'informations à ce sujet, dans les guides Rails, ici .

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