6

我正在将我的 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);
    ...
}

有任何想法吗?

编辑:我也在从 Acegi 升级到 Spring Security 插件。我认为这无关紧要,但我想我会提到它。

我在https://github.com/skazzaks/Grails-Unique-Test上放置了一个遇到问题的示例, 这使它看起来绝对像一个错误。

4

2 回答 2

4

几天前,我在从 1.3.7 升级到 2.0.3 时遇到了类似的奇怪验证问题。

对我来说诀窍是手动清除我的目标目录。显然,重新编译所有类使应用程序重回正轨。

不知道它是否适用于您的情况,但可能值得一试。

于 2012-05-20T20:11:18.353 回答
0

我相信这是一个错误,因为我的域类位于src/groovy.

于 2012-07-14T19:48:40.863 回答