2012-08-04 8 views
35

Meine Felder sind: tax rate und tax amount in dem ich positive Werte validieren möchte.Validierung für nicht negative ganze Zahlen und Dezimalwerte

Ich schrieb diese Validierung:

:format => { :with => /\A[+]?\d+\Z/} 

Aber es ist nicht Zahlen mit einem Dezimalpunkt wie 4.67 nehmen. Und es wirft mir einen Fehler. Welcher Typ von Validierung wird für Ganzzahlen und Gleitkommawerte verwendet? zum Beispiel: 2, 57, 54.56 sollte passieren, aber -2.56, -87 sollte fehlschlagen.

Antwort

107

Funktioniert das nicht?

validates :your_field, :numericality => { :greater_than_or_equal_to => 0 } 

(erraten für Steuern folgende Regel mehr richtig sein :)

validates :your_field, :numericality => { :greater_than_or_equal_to => 0, :less_than_or_equal_to => 100 } 
+0

Danke für die Antwort. Ich werde es versuchen. –

+0

ist das Feld eine Zeichenfolge oder ein float? Wenn es sich nicht um eine Zeichenkette handelt, sollten Sie keine Neuausgabe ausführen. Etwas wie dieses Beispiel wäre besser. Sie würden eine Validierung benötigen, die nur überprüft, ob es <0 ist – Ultimation

6

Sie verwenden:

validates :tax_rate, inclusion: { in: 0..5 } 

Es erlaubt Werte wie: 0, 2, 1.2, 3.2

Hoffe es hilft!

+2

Ich verwendete diese gleiche Syntax in einigen Validierung, die ich früher getestet habe, aber beschlossen, es nicht zu verwenden. Wenn ein Benutzer einen Wert außerhalb dieses Bereichs eingibt, wird ein Fehler wie "Wert ist nicht enthalten" angezeigt. Ich entschied mich für eine Lösung wie ': greater_than_or_equal_to', weil dem Benutzer ein aussagekräftigerer Fehler präsentiert wird. – Tass

Verwandte Themen