Я использую Ruby on Rails 3.0.9 и хочу проверить, входит ли число в диапазон. То есть, если у меня есть переменная, number = 5
я хотел бы проверить 1 <= number <= 10
и получить логическое значение, если number
значение включено в этот диапазон.
Я могу сделать это так:
number >= 1 && number <= 10
но я хотел бы сделать это в одном заявлении. Как я могу это сделать?
Ответы:
(1..10).include?(number)
это уловка.Кстати: если вы хотите подтвердить номер с помощью
ActiveModel::Validations
, вы даже можете сделать:validates_inclusion_of :number, :in => 1..10
читайте здесь о validates_inclusion_of
или способ Rails 3+:
validates :number, :inclusion => 1..10
источник
allow_nil
. Просто добавьте это так:, allow_nil: true
Enumerable # include? :
(1..10).include? n
Крышка диапазона №? :
(1..10).cover? n
Сопоставимый # между? :
n.between? 1, 10
Валидатор численности :
validates :n, numericality: {only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10}
Валидатор включения :
validates :n, inclusion: 1..10
источник
validates :amount, numericality: { less_than_or_equal_to: ->(m) { m.user.balance }, greater_than_or_equal_to: 0 }
Если это не часть процесса проверки, вы можете использовать
#between?
:2.between?(1, 4) => true
источник
Чтобы получить точные сообщения об ошибках при отправке формы, попробуйте эти
validates_numericality_of :tax_rate, greater_than_or_equal_to: 0, less_than_or_equal_to: 100, message: 'must be between 0 & 100'
источник
Рельсы 4
validates_inclusion_of :number, :in => start_number..end_number
validates :number, :inclusion => start_number..end_number
Но самый простой способ найти
number.between? start_number, end_number
источник
В Ruby 1.9 наиболее прямым переводом является Range # cover? :
Если вам интересно, чем это отличается от
Range#include?
того, что последний выполняет итерацию по всем элементам диапазона, если это нечисловой диапазон. См. Это сообщение в блоге для более подробного объяснения.источник
Если вы хотите проверить, что конкретный номер существует в настраиваемом массиве,
Например, я хочу знать, включено ли 5 в список = [1,4,6,10] или нет
list.include? 5 => false list.include? 6 => true
источник