Я занимаюсь обновлением своего приложения Grails 1.3.7 до версии 2.0.3 и исправил большинство проблем. Однако у меня есть код, который раньше работал, создавая пользователя и сохраняя его в базе данных. Код НЕ должен проходить проверку, так как я повторно использую имя пользователя, которое уже занято, и существует уникальное ограничение на имя пользователя. .validate()
возвращает значение true, но затем код фактически перестает работать, когда user.save()
вызывается с ошибкой уникального ограничения MySql.
Должна выдавать ошибку:
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()
}
}
В User.groovy:
static constraints = {
username(blank: false, unique: true);
...
}
Есть идеи?
РЕДАКТИРОВАТЬ: я также обновляюсь до подключаемого модуля Spring Security от Acegi. Я не думаю, что это будет актуально, но я решил упомянуть об этом.
Я поместил образец, который страдает от проблемы, по адресу: https://github.com/skazzaks/Grails-Unique-TestЭто определенно делает его похожим на ошибку.