Tengo el siguiente modelo de validación de campo:

validates_uniqueness_of :acronym, :scope => [:group_id], :case_sensitive => false

El problema es que este campo es opcional, y un vacío o nulo valor está volviendo como un acrónimo tomado ya. Yo sólo quiero validar que un acrónimo es único, si un valor se proporcionó.. ¿hay alguna manera de actualizar esta validación que sólo tienen lugar si hay un valor real.. no nil/vacío?

Gracias

InformationsquelleAutor AnApprentice | 2012-04-15

1 Comentario

  1. 60

    Sí, hay dos posibles opciones que se pueden pasar a las validaciones de campos opcionales: :allow_blank o :allow_nil, que se salte las validaciones en blank y nil campos, respectivamente. Si usted cambia su validación a la siguiente, usted debe obtener el comportamiento que usted desea:

    validates_uniqueness_of :acronym, :allow_blank => true, :scope => [:group_id], :case_sensitive => false
    • Muchas gracias! Mi código es mucho más amplio. Otras respuestas sugirió el uso de :a menos que o :si, pero creo que esta es la mejor manera. Cualquier problema en dejar :group_id de la matriz?
    • La especificación de este es it { is_expected.to validate_uniqueness_of(:acronym).scoped_to(:group_id).case_insensitive.allow_blank }

Dejar respuesta

Please enter your comment!
Please enter your name here