2016-10-28 3 views
1

ich eine Klasse mit den folgenden Prüfungen haben:Rails Validator überspringen Aufnahme

fields field:name 'field_name', 

requires :field_name, 

validates :field_name, inclusion: { in: %w(cat dog fish), 
         message: "%{value} is not a valid field_name" 

So instanziiert ich diese Klasse mit field_name null und ich habe zwei Fehler Validierung:

  1. field_name kann nicht null sein (so die requires schlägt fehl, wie erwartet)
  2. null ist kein gültiger Feldname

Gibt es eine Möglichkeit, dass ich diese Validatoren für diese einrichten kann, wenn field_name null ist, wird es die zweite Überprüfung überspringen?

Antwort

1

Versuchen Sie folgendes:

validates :field_name, inclusion: { in: %w(cat dog fish) }, 
         message: "%{value} is not a valid field_name", 
         unless: -> { field_name.nil? } 

Wenn Sie mit Active (was Sie sind, wenn Sie verwenden Rails), können Sie auch .blank? statt .nil? auch verwenden können, um leere Arrays und Hashes zu behandeln und Strings mit nur Leerzeichen als leer.

+0

das hat funktioniert. Du verpasst eine schließende '}' – Rhs

+0

Kopierte die erste Zeile von Ihrer Frage. :) –

Verwandte Themen