2012-05-18 12 views
5

Estoy en proceso de actualizar mi aplicación Grails 1.3.7 a 2.0.3 y he solucionado la mayoría de los problemas. Sin embargo, tengo un código que solía funcionar que crea un usuario y los guarda en la base de datos. El código NO debe pasar la validación ya que estoy reutilizando un nombre de usuario que ya se tomó y existe una restricción única en el nombre de usuario. .validate() devuelve verdadero, pero luego el código realmente se activa cuando se llama a user.save() con un error de restricción único MySql.La validación de Grails no funciona después de la actualización

debe lanzar un error:

def submitSignup = { 
     def user = new User(params) 

     user.validate() 
     if (!user.hasErrors()) { 
      ... 
      // This line bombs with the MySql unique constraint I would have expected .validate() to get 
      user.save() 
     } 
} 

En User.groovy:

static constraints = { 
    username(blank: false, unique: true); 
    ... 
} 

¿Alguna idea?

EDITAR: También estoy actualizando al complemento Spring Security de Acegi. No creo que esto sea relevante, pero pensé que lo mencionaría.

Puse una muestra que sufre el problema en: https://github.com/skazzaks/Grails-Unique-Test Esto hace que definitivamente parezca un error.

+0

¿Esto le está fallando en una prueba o cómo se encontró con este problema? Configuré una prueba de unidad simple y la restricción única funciona correctamente para mí. –

+0

@JarredOlson Esto está fallando cuando ejecuté la aplicación e intenté enviar un nuevo Usuario (que ya tiene el nombre de usuario). Esto funciona correctamente en la versión 1.3.7 que tengo en producción. No estoy seguro de cómo explicar la disparidad. – skaz

+0

Estaba experimentando un problema de validación algo relacionado después de haber agregado la restricción única a una aplicación de Grails mientras se estaba ejecutando. validate() no se quejó de valores que no son únicos. Ayudó a limpiar, eliminar manualmente el directorio de destino y compilar. – HumanInDisguise

Respuesta

0

Creo que esto es un error debido a que mis clases de dominio están en src/groovy.

3

Estaba experimentando un problema de validación raro similar hace un par de días mientras actualizaba de 1.3.7 a 2.0.3.

¿Cuál fue el truco para mí fue una limpieza manual de mi dir de destino. Al parecer, recompilar todas las clases devuelve la aplicación a la pista.

No sé si funcionará en su caso, pero podría valer la pena intentarlo.

+0

Estaba experimentando un problema de validación algo relacionado después de haber agregado la restricción única a una aplicación de Grails mientras se estaba ejecutando. validate() no se quejó de valores que no son únicos. Ayudó a limpiar, eliminar manualmente el directorio de destino y compilar. – HumanInDisguise

Cuestiones relacionadas