Как проверить, включен ли номер в диапазон (в одном заявлении)?

Я использую Ruby on Rails 3.0.9, и я хотел бы проверить, включен ли номер в диапазон. То есть, если у меня есть переменная number = 5, я бы хотел проверить 1 <= number <= 10 и получить логическое значение, если значение number включено в этот диапазон.

Я могу сделать это вот так:

number >= 1 && number <= 10

но я хотел бы сделать это в одном заявлении. Как я могу это сделать?

Ответ 1

(1..10).include?(number) - это трюк.

Btw: Если вы хотите проверить число с помощью ActiveModel::Validations, вы можете даже сделать:

validates_inclusion_of :number, :in => 1..10

прочитайте здесь о validates_inclusion_of

или путь Rails 3:

validates :number, :inclusion => 1..10

Ответ 3

Если это не часть процесса проверки, вы можете использовать #between?:

2.between?(1, 4)
=> true

Ответ 4

Для получения точных сообщений об ошибках в форме submit, попробуйте эти

validates_numericality_of :tax_rate, greater_than_or_equal_to: 0, less_than_or_equal_to: 1, message: 'must be between 0 & 100'

Ответ 5

Рельсы 4

если вы хотите использовать ActiveModel:: Validations, вы можете использовать

validates_inclusion_of :number, :in => start_number..end_number

или синтаксис Rails 3

validates :number, :inclusion => start_number..end_number

Но самый простой способ найти

number.between? start_number, end_number

Ответ 6

В Ruby 1.9 наиболее прямой перевод кажется Крышка диапазона #?:

Возвращает true, если obj находится между начальным и конечным, то есть beg <= obj <= end (или end exclusive when exclude_end? истинно).

Если вы задаетесь вопросом, как это отличается от Range#include?, это значит, что последний выполняет итерацию по всем элементам диапазона, если это нечисловой диапазон. См. Это сообщение в блоге для более подробного объяснения.

Ответ 7

Если вы хотите проверить, существует ли конкретный номер в пользовательском массиве,

Например, я хочу знать, включено ли 5 в список = [1,4,6,10] или нет

list.include? 5 => false
list.include? 6 => true