2012-05-18 8 views
5

Sono in procinto di aggiornare la mia app Grails 1.3.7 alla 2.0.3 e ho risolto la maggior parte dei problemi. Tuttavia, ho un codice che funzionava che crea un utente e li salva nel database. Il codice NON deve superare la convalida poiché sto riutilizzando un nome utente già preso e c'è un vincolo univoco sul nome utente. .validate() restituisce true, ma in realtà il codice bombarda effettivamente quando viene chiamato user.save() con un errore di vincolo univoco MySql.Convalida Grails non funziona dopo l'aggiornamento

dovrebbe lanciare un errore:

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() 
     } 
} 

In User.groovy:

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

Tutte le idee?

EDIT: Sto anche aggiornando il plugin Spring Security di Acegi. Non penso che sarebbe rilevante, ma ho pensato di parlarne.

Metto su un campione che soffre del problema a: https://github.com/skazzaks/Grails-Unique-Test Questo lo rende sicuramente un bug.

+0

Questo è un errore per voi in un test o come vi siete imbattuti in questo problema? Ho impostato un semplice test unitario e il vincolo univoco funziona correttamente per me. –

+0

@JarredOlson Questo non funziona quando ho eseguito l'applicazione e ho provato a inviare un nuovo utente (che ha già preso il nome utente). Funziona correttamente sulla versione 1.3.7 che ho in produzione. Non sono sicuro di come spiegare la disparità. – skaz

+0

Si è verificato un problema di convalida un po 'correlato dopo aver aggiunto il vincolo univoco a un'applicazione Grails mentre era in esecuzione. validate() non si lamentava di valori che non erano univoci. Ha aiutato a pulire, eliminare manualmente la directory di destinazione e compilare. – HumanInDisguise

risposta

0

Credo che questo sia un bug dovuto al fatto che le mie classi Dominio sono in src/groovy.

3

Si è verificato un problema di convalida simile un paio di giorni fa durante l'aggiornamento da 1.3.7 a 2.0.3.

Qual è stato il trucco per me è stata una compensazione manuale del mio obiettivo dir. Apparentemente la ricompilazione di tutte le classi rimette l'applicazione in carreggiata.

Non so se funzionerà nel tuo caso, ma potrebbe valere la pena di provarlo.

+0

Si è verificato un problema di convalida un po 'correlato dopo aver aggiunto il vincolo univoco a un'applicazione Grails mentre era in esecuzione. validate() non si lamentava di valori che non erano univoci. Ha aiutato a pulire, eliminare manualmente la directory di destinazione e compilare. – HumanInDisguise

Problemi correlati