validates validate than rails method greater custom ruby-on-rails validation

ruby-on-rails - than - rails validates message



Ruby on Rails-Validate a Cost (3)

Verifique el precio y verifique el formato

#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/

¿Cuál es la mejor manera de validar una entrada de costo / precio por un usuario? Reglas de validación a continuación:

  • Ejemplos de formatos permitidos .23, .2, 1.23, 0.25, 5, 6.3 (máximo de dos dígitos después del punto decimal)
  • Valor mínimo de 0.01
  • Valor máximo de 9.99

Para las validaciones del lado del cliente puede usar un complemento jQuery como este que le permite definir diferentes formatos válidos para una entrada determinada.

Para las validaciones del lado del servidor y de acuerdo con esta question/answer quizás deba usar una columna decimal para el price en la que pueda definir valores de precision y scale , la scale resuelve los dos dígitos después de la restricción del punto decimal.

Luego, para validar la numericidad, el valor mínimo y máximo, puede usar el siguiente método de validación:

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


Puede crear validaciones personalizadas. Las leyendas dicen, por ejemplo, el segundo caso:

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

Más sobre esto, en Rails Guides, here .