How to check if a number is included in a range (in one statement)?
Ruby on-RailsRubyRuby on-Rails-3NumbersRangeRuby on-Rails Problem Overview
I am using Ruby on Rails 3.0.9 and I would like to check if a number is included in a range. That is, if I have a variable number = 5
I would like to check 1 <= number <= 10
and retrieve a boolean value if the number
value is included in that range.
I can do that like this:
number >= 1 && number <= 10
but I would like to do that in one statement. How can I do that?
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
(1..10).include?(number)
is the trick.
Btw: If you want to validate a number using ActiveModel::Validations
, you can even do:
validates_inclusion_of :number, :in => 1..10
read here about validates_inclusion_of
or the Rails 3+ way:
validates :number, :inclusion => 1..10
Solution 2 - Ruby on-Rails
(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
Solution 3 - Ruby on-Rails
If it's not part of a validation process you can use #between?
:
2.between?(1, 4)
=> true
Solution 4 - Ruby on-Rails
For accurate error messages on a form submit , try these
validates_numericality_of :tax_rate, greater_than_or_equal_to: 0, less_than_or_equal_to: 100, message: 'must be between 0 & 100'
Solution 5 - Ruby on-Rails
Rails 4
> if you want it through ActiveModel::Validations you can use
validates_inclusion_of :number, :in => start_number..end_number
> or the Rails 3 syntax
validates :number, :inclusion => start_number..end_number
But The simplest way i find is
number.between? start_number, end_number
Solution 6 - Ruby on-Rails
In Ruby 1.9 the most direct translation seems to be Range#cover?:
> Returns true if obj is between beg and end, i.e beg <= obj <= end (or > end exclusive when exclude_end? is true).
In case you wonder how that's different from Range#include?
, it's that the latter iterates over all elements of the range if it's a non-numeric range. See this blog post for a more detailed explanation.
Solution 7 - Ruby on-Rails
If you want to check particular number exists in custom array,
As for example I want to know whether 5 is included in list=[1,4,6,10] or not
list.include? 5 => false
list.include? 6 => true