Ich verwende Ruby on Rails 3.0.9 und möchte prüfen, ob eine Nummer in einem Bereich enthalten ist. Das heißt, wenn ich eine Variable number = 5
habe, möchte ich 1 <= number <= 10
einen booleschen Wert überprüfen und abrufen, wenn der number
Wert in diesem Bereich enthalten ist.
Ich kann das so machen:
number >= 1 && number <= 10
aber ich möchte das in einer Aussage tun. Wie kann ich das machen?
Antworten:
(1..10).include?(number)
ist der Trick.Übrigens: Wenn Sie eine Nummer mit validieren möchten
ActiveModel::Validations
, können Sie sogar Folgendes tun:Lesen Sie hier über validates_inclusion_of
oder der Rails 3+ Weg:
quelle
allow_nil
. Fügen Sie es einfach so hinzu:, allow_nil: true
Aufzählbare # enthalten? ::
Bereich # Abdeckung? ::
Vergleichbare # zwischen?::
Numericality Validator :
Einschlussvalidator :
quelle
validates :amount, numericality: { less_than_or_equal_to: ->(m) { m.user.balance }, greater_than_or_equal_to: 0 }
Wenn es nicht Teil eines Validierungsprozesses ist, können Sie Folgendes verwenden
#between?
:quelle
Versuchen Sie diese, um genaue Fehlermeldungen in einem Formular zu erhalten
quelle
Schienen 4
Aber der einfachste Weg, den ich finde, ist
number.between? start_number, end_number
quelle
In Ruby 1.9 scheint die direkteste Übersetzung Range # cover zu sein? ::
Range#include?
Wenn Sie sich fragen, wie sich das unterscheidet , iteriert letzteres über alle Elemente des Bereichs, wenn es sich um einen nicht numerischen Bereich handelt. In diesem Blog-Beitrag finden Sie eine ausführlichere Erklärung.quelle
Wenn Sie überprüfen möchten, ob eine bestimmte Nummer im benutzerdefinierten Array vorhanden ist,
Zum Beispiel möchte ich wissen, ob 5 in list = [1,4,6,10] enthalten ist oder nicht
quelle