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.
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. –
@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
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