Ich habe ein Feld, das ich validieren möchte. Ich möchte, dass das Feld leer gelassen werden kann, aber wenn ein Benutzer Daten eingibt, möchte ich, dass es in einem bestimmten Format vorliegt. Derzeit verwende ich die folgenden Validierungen im Modell, aber der Benutzer kann es nicht leer lassen:
validates_length_of :foo, :maximum => 5
validates_length_of :foo, :minimum => 5
Wie schreibe ich das, um mein Ziel zu erreichen?
ruby-on-rails
ruby
validation
model
bgadoci
quelle
quelle
Sie können auch dieses Format verwenden:
Oder da Min und Max gleich sind, funktioniert auch Folgendes:
quelle
Aus der validates_length_of-Dokumentation :
quelle
Oder noch prägnanter (mit der neuen Hash-Syntax) aus der Validierungsdokumentation :
Die Obergrenze sollte wahrscheinlich etwas Bedeutenderes wie "in: 5..20" darstellen, aber nur die Frage auf den Brief beantworten.
quelle
in
wird mit Strings funktionieren, scheint nur Zahlen zu seinvalidates :foo, length: 2..5, allow_blank: true
aber `length: {is: 5}` würde im Fall des OPjeder validates_ * akzeptiert: if oder: es sei denn Optionen
Dabei ist validate_foo_condition eine Methode, die true oder false zurückgibt
Sie können auch ein Proc-Objekt übergeben:
quelle
rspec für das gleiche ist
quelle
Wie wär es damit:
validates_length_of :foo, is: 3, allow_blank: true
quelle
Fügen Sie Ihrem Modell hinzu:
Farbe ist eine Zeichenfolge:
quelle
In Ihrem Modell zB
quelle