Убедитесь, что значение находится в определенном диапазоне, например, 1 <= val <= 2 - PullRequest
22 голосов
/ 20 июня 2011

Я хочу проверить число :value в пределах 1 или 2

validates :value, :format => { :with => /1|2/, :message => "Select number.." }

Однако приведенный выше код не проходит проверку, когда value == 1

Убедитесь, что вашРешение позволяет мне добавить сообщение для проверки.

Ответы [ 4 ]

34 голосов
/ 20 июня 2011
16 голосов
/ 20 июня 2011

Вы ищете validates_inclusion_of :

validates_inclusion_of :value, :in => [1, 2],
  :message => "Select one of %{value}"

Вы также можете использовать (довольно новую) форму для выстрела и Range вместо Array:

validates :value, :inclusion => { :in => 1..2 }
13 голосов
/ 20 июня 2011

, если вы хотите, чтобы это было число в пределах 1 и 2 (1.5, 1.6839749 и т. Д.), Сделайте

validates_numericality_of :value, :greater_than_or_equal_to => 1, :less_than_or_equal_to => 2, :message => "blah"

, возможно, не то, что вы ищете, но стоит отметить,

0 голосов
/ 29 июля 2018

Если вы используете inclusion сообщения об ошибках не подходят:

["Value is not included in the list"]

Использование

validates :value, presence: true, numericality: { greater_than_or_equal_to: 1, less_than_or_equal_to: 10 }

Для улучшения сообщений об ошибках, таких как:

["Value must be less than or equal to 2"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...