如何检查一个范围内是否包含一个数字(在一个语句中)?

Bac*_*cko 77 ruby numbers ruby-on-rails range ruby-on-rails-3

我正在使用Ruby on Rails 3.0.9,我想检查一个数字是否包含在一个范围内.也就是说,如果我有一个变量,number = 5我想检查1 <= number <= 10并检索一个布尔值,如果该number值包含在该范围内.

我可以这样做:

number >= 1 && number <= 10
Run Code Online (Sandbox Code Playgroud)

但我想在一个声明中这样做.我怎样才能做到这一点?

Mar*_*her 149

(1..10).include?(number) 是诀窍.

顺便说一句:如果你想用一个数字验证ActiveModel::Validations,你甚至可以这样做:

validates_inclusion_of :number, :in => 1..10
Run Code Online (Sandbox Code Playgroud)

在这里阅读validates_inclusion_of

或者Rails 3方式:

validates :number, :inclusion => 1..10
Run Code Online (Sandbox Code Playgroud)

  • Rails有一个选项`allow_nil`.只需添加它:`,allow_nil:true` (5认同)

tyb*_*103 56

枚举#包括哪些内容?:

(1..10).include? n
Run Code Online (Sandbox Code Playgroud)

范围#盖?:

(1..10).cover? n
Run Code Online (Sandbox Code Playgroud)

具有可比性#?:

n.between? 1, 10
Run Code Online (Sandbox Code Playgroud)

数值验证器:

validates :n, numericality: {only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10}
Run Code Online (Sandbox Code Playgroud)

包含验证器:

validates :n, inclusion: 1..10
Run Code Online (Sandbox Code Playgroud)


Hol*_*lin 16

如果它不是验证过程的一部分,您可以使用#between?:

2.between?(1, 4)
=> true
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 7

要在表单提交上获得准确的错误消息,请尝试这些

validates_numericality_of :tax_rate, greater_than_or_equal_to: 0, less_than_or_equal_to: 100, message: 'must be between 0 & 100'
Run Code Online (Sandbox Code Playgroud)