Comment vérifier si un nombre est inclus dans une plage (dans une déclaration)?

J’utilise Ruby on Rails 3.0.9 et j’aimerais vérifier si un nombre est inclus dans une plage. C’est-à-dire que si j’ai un number = 5 variable number = 5 je voudrais vérifier 1 <= number <= 10 et récupérer une valeur booléenne si la valeur du number est incluse dans cette plage.

Je peux faire ça comme ça:

 number >= 1 && number <= 10 

mais je voudrais le faire dans une déclaration. Comment puis je faire ça?

(1..10).include?(number) est le truc.

Btw: Si vous voulez valider un numéro en utilisant ActiveModel::Validations , vous pouvez même faire:

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

lire ici à propos de validates_inclusion_of

ou les Rails 3 voies:

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

Enumerable # include? :

 (1..10).include? n 

Range # couvrir? :

 (1..10).cover? n 

# Comparable? :

 n.between? 1, 10 

Validateur Numérique :

 validates :n, numericality: {only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10} 

Validateur d’inclusion :

 validates :n, inclusion: 1..10 

Si cela ne fait pas partie d’un processus de validation, vous pouvez utiliser #between? :

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

Rails 4

si vous le souhaitez via ActiveModel :: Validations, vous pouvez utiliser

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

ou la syntaxe Rails 3

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

Mais la façon la plus simple que je trouve est

number.between? start_number, end_number

Pour des messages d’erreur précis sur un formulaire, essayez-les

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

En Ruby 1.9, la traduction la plus directe semble être la couverture de Range #? :

Renvoie true si obj se situe entre beg et end, c’est-à-dire beg < = obj <= end (ou end exclusive lorsque exclude_end? Est true).

Au cas où vous vous demanderiez en quoi cela diffère de Range#include? , c’est que le dernier itère sur tous les éléments de la plage s’il s’agit d’une plage non numérique. Voir cet article de blog pour une explication plus détaillée.