Używam Ruby on Rails 3.0.9 i chciałbym sprawdzić, czy liczba znajduje się w zakresie. Oznacza to, że jeśli mam zmienną number = 5
, chciałbym sprawdzić 1 <= number <= 10
i pobrać wartość logiczną, jeśli number
wartość znajduje się w tym zakresie.
Mogę to zrobić w ten sposób:
number >= 1 && number <= 10
ale chciałbym to zrobić w jednym oświadczeniu. Jak mogę to zrobić?
Odpowiedzi:
(1..10).include?(number)
jest sztuczka.Btw: Jeśli chcesz zweryfikować numer za pomocą
ActiveModel::Validations
, możesz nawet zrobić:validates_inclusion_of :number, :in => 1..10
przeczytaj tutaj o validates_inclusion_of
lub sposób Rails 3+:
validates :number, :inclusion => 1..10
źródło
allow_nil
. Po prostu dodaj to tak:, allow_nil: true
Enumerable # include? :
(1..10).include? n
Zakres # obejmuje? :
(1..10).cover? n
Porównywalne # między? :
n.between? 1, 10
Walidator liczbowości :
validates :n, numericality: {only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10}
Weryfikator włączenia :
validates :n, inclusion: 1..10
źródło
validates :amount, numericality: { less_than_or_equal_to: ->(m) { m.user.balance }, greater_than_or_equal_to: 0 }
Jeśli nie jest to część procesu walidacji, możesz użyć
#between?
:2.between?(1, 4) => true
źródło
Aby uzyskać dokładne komunikaty o błędach w przesyłanym formularzu, wypróbuj te
validates_numericality_of :tax_rate, greater_than_or_equal_to: 0, less_than_or_equal_to: 100, message: 'must be between 0 & 100'
źródło
Szyny 4
validates_inclusion_of :number, :in => start_number..end_number
validates :number, :inclusion => start_number..end_number
Ale najprostszy sposób, jaki znalazłem, to
number.between? start_number, end_number
źródło
W Rubim 1.9 najbardziej bezpośrednim tłumaczeniem wydaje się być okładka Range #? :
Jeśli zastanawiasz się, czym to się różni
Range#include?
, polega na tym, że ten ostatni iteruje po wszystkich elementach zakresu, jeśli jest to zakres nieliczbowy. Zobacz ten wpis na blogu, aby uzyskać bardziej szczegółowe wyjaśnienie.źródło
Jeśli chcesz sprawdzić, czy konkretna liczba istnieje w niestandardowej tablicy,
Na przykład chcę wiedzieć, czy na liście jest 5 = [1,4,6,10], czy nie
list.include? 5 => false list.include? 6 => true
źródło