6

Me gustaría validar un campo con expresiones regulares y también permitir que esté en blanco (para aceptar una cadena vacía). Hasta ahora, lo único que he conseguido es escribir una expresión regular que permite una cadena vacía, como:Rails ActiveRecord validación de expresiones regulares de campos no obligatorios

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

Ahora, esto no puede ser una manera apropiada - esto parece como un truco feo. Me gustaría saber si hay otro enfoque (correcto).

Respuesta

10

allow_blank debería funcionar. (También hay allow_nil para aceptar valores nulos (no una cadena vacía))

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

Ah, hermosa, yo sabía que era cuestión RT (F) M después de todo! =) – aL3xa

0

No es necesario la alternancia ... puede utilizar el '*' cuantificador para especificar 'cero o más' ocurrencias . Además, usaría '\ w' en lugar de [a-z] ... esto captará caracteres alfanuméricos.

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

He puesto '[a-z]' solo como ejemplo, pero prefiero no usar '*' allí. ': allow_blank' fue perfecto, ya que permite cadenas' nil' y cadenas vacías. – aL3xa

Cuestiones relacionadas