2012-01-06 9 views
21

Me gustaría validar el formato de un valor de formulario, permitiendo un valor vacío o requiriendo un formato específico.Rieles: ¿cómo validar el formato solo si el valor está presente?

Para validar un valor en contra de un formato, esto funciona bien:

validates :application_bundle_identifier, :format => { 
    :with => /^[a-zA-Z0-9.-]+$/, 
    :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters." 
} 

Ahora, me gustaría permitir a los usuarios no entran en el valor en absoluto. En este caso, podría ajustar la expresión regular a ^[a-zA-Z0-9.-]*$, pero esto no parece un muy buen camino de carriles. Dependiendo del formato, podría no ser posible, o al menos menos claro.

¿Cuál es la mejor práctica en este caso?

Respuesta

45

Puede usar la opción :allow_blank => true para omitir la validación cuando el atributo está en blanco/vacío/nulo.

0

Agregue unless nil? || blank?, que debe omitir la validación si está en blanco (vacío) o nulo, creo.

Vea el último ejemplo de código en this page.

+0

¿Qué ejemplo ahora? –

+0

El validador personalizado en la parte inferior de la página en 'lib/email_format_validator.rb' – jefflunt

+0

Debe haber cambiado desde la primera vez que se refirió a él. –

Cuestiones relacionadas