2016-08-15 3 views
0

ich in einem meiner Modell eine ENUM Validierung für Enum schreiben in meinem apiWie in Schienen

enum pay_method: { 
    cash: 0, 
    card: 1 
} 

I Validierung für diese Enumeration haben wollen, aber ich kann das nicht tun. Ich schrieb eine Validierung in mein Modell, aber es hat keine Wirkung

+0

Wie sieht Ihre Validierung aus? – spickermann

Antwort

3

Eine Validierung für Enum wird nicht funktionieren, weil Rails nicht einmal erlaubt, eine Enum-Variable mit einem falschen Wert zuzuweisen. Sie erhalten einen Fehler vor einer Validierung. Es gibt eine gute Diskussion dieses Verhaltens hier https://github.com/rails/rails/issues/13971

0

Rails enum Funktionalität löst einen Fehler aus, wenn der übergebene Wert nicht einem der Schlüssel oder Werte des Hash entspricht. In diesem Fall entspricht es nicht dem Schlüssel, weil der Wert, den Sie übergeben, eine Zeichenkette ist, also sind Sie hier richtig.

Der Fehler weiterhin angezeigt, da Aufzählungen vor dem Validierungsprozess festgelegt sind. Dies könnte Sie Entwickler verstehen

@shippimg = Shippig.first 
@shipping.status = 99 
ArgumentError: '99' is not a valid status 

Schienen sagen, dass Programmierer sind diejenigen verantwortlich, kümmert sich helfen, welche Werte sie verwendet ENUM assingning Attribute

i für die Validierung von Aufzählungen Aufnahme ein Juwel gemacht haben. Das stört zumindest den Absturz Ihres Servers https://github.com/CristiRazvi/enum_attributes_validation