2013-06-28 5 views

risposta

26

Questa sintassi eseguirà la convalida inclusione pur consentendo Nils:

validates :kind, :inclusion => { :in => ['a', 'b'] }, :allow_nil => true 
+0

Non sicuro al 100% ma penso che allow_nil potrebbe dover essere incluso nell'hash di inclusione – aceofspades

+1

La sintassi è corretta per Rails 3.2 (testato), non so se il tuo suggerimento potrebbe essere valido per un'altra versione? – Matt

+0

Forse. Mi sembra sbagliato perché è davvero un'eccezione al requisito di inclusione, che di per sé fallirebbe. Se funziona funziona! – aceofspades

9

controllo anche: allow_blank => true

+1

'allow_nil: true' non ha funzionato in un'app Rails 4 su cui stavo lavorando. Posso confermare che funziona in Rails 4. –

+1

confermando che 'allow_nil: true' NON funziona nei binari 5 ... questo funziona in Rails 5. – daino3

11

In Rails 5 è possibile utilizzare allow_blank: true all'esterno o all'interno del blocco di inclusione:

validates :kind, inclusion: { in: ['a', 'b'], allow_blank: true } 

o

validates :kind, inclusion: { in: ['a', 'b'] }, allow_blank: true 

suggerimento: è possibile utilizzare in: %w(a b) per valori di testo

+0

Questa è anche l'opzione corretta per le app Rails 4! – RSmithlal