Ruby on Rails - проверка стоимости - PullRequest
34 голосов
/ 13 ноября 2010

Каков наилучший способ проверки введенной пользователем стоимости / цены, правила проверки приведены ниже:

  • Примеры допустимых форматов .23, .2, 1.23, 0.25, 5, 6.3 (максимум две цифры после запятой)
  • Минимальное значение 0,01
  • Максимальное значение 9,99

Ответы [ 3 ]

69 голосов
/ 14 ноября 2010

Проверьте цену и проверьте формат

#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/
4 голосов
/ 13 ноября 2010

Для проверки на стороне клиента вы можете использовать плагин jQuery, например , этот , который позволяет вам определять различные допустимые форматы для данного ввода.

Для проверки на стороне сервера и в соответствии с этим вопрос / ответ возможно, вам следует использовать столбец decimal для price, в котором вы можете определить значения для precision и scale, scale решает две цифры после ограничения десятичной точки.

Затем для проверки числового, минимального и максимального значения вы можете использовать следующий метод проверки:

validates_numericality_of :price, :greater_than => 0, :less_than => 10
2 голосов
/ 13 ноября 2010

Вы можете создавать собственные проверки. Например, второй случай:

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 Guides здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...