Каков наилучший способ проверки ввода цены/цены пользователем, правила проверки ниже:
- Примеры разрешенных форматов .23,.2, 1.23, 0.25, 5, 6.3 (максимум две цифры после десятичной точки)
- Минимальное значение 0,01
- Максимальное значение 9.99
Каков наилучший способ проверки ввода цены/цены пользователем, правила проверки ниже:
#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/
Для проверки на стороне клиента вы можете использовать плагин jQuery, например этот, который позволяет вам определять разные допустимые форматы для заданного ввода.
Для проверки на стороне сервера и в соответствии с этим вопросом/ответом, возможно, вы должны использовать столбец decimal
для price
, в котором вы можете определить значения для precision
и scale
, scale
решает две цифры после ограничения десятичной точки.
Затем, чтобы проверить численное, минимальное и максимальное значение, вы можете использовать следующий метод проверки:
validates_numericality_of :price, :greater_than => 0, :less_than => 10
Вы можете создавать пользовательские проверки. Предположим, например, второй случай:
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
Подробнее об этом, в руководствах Rails, здесь.