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 .