6

Mi piacerebbe convalidare un campo con espressioni regolari e lasciare che sia vuoto (per accettare una stringa vuota). Finora, l'unica cosa che sono riuscito è quello di scrivere una regex che permette una stringa vuota, come:Rails ActiveRecord convalida regex di campi non obbligatori

validates :field, 
      format: { with: /\A([a-z]+|)\z/i } 

Ora, questo non può essere un modo corretto - questo sembra un brutto hack. Mi piacerebbe sapere se c'è un altro (corretto) approccio?

risposta

10

allow_blank dovrebbe funzionare. (C'è anche allow_nil per l'accettazione nil solo i valori (non una stringa vuota))

validates :field, 
      format: { with: /\A([a-z]+|)\z/i }, :allow_blank => true 
+0

Ah, bello, sapevo che era il problema RT (F) M, dopo tutto! =) – aL3xa

0

Non è necessario l'alternanza ... si può usare il quantificatore '*' per specificare 'zero o più' occorrenze . Inoltre, userei '\ w' piuttosto che [a-z] ... questo catturerà i caratteri alfanumerici.

validates :field, 
     format: { with: /\A(\w*)\z/i } 
+0

Ho messo '[a-z]' solo come esempio, ma preferirei non usare '*' lì. ': allow_blank' era perfetto, in quanto consente sia stringhe' nil' che vuote. – aL3xa

Problemi correlati