6

Grails 1.3.7 アプリを 2.0.3 にアップグレードする過程にあり、ほとんどの問題を修正しました。ただし、以前はユーザーを作成してデータベースに保存するコードがありました。既に使用されているユーザー名を再利用しており、ユーザー名には一意の制約があるため、コードは検証に合格しないはずです。true を返しますが、MySql 一意制約エラーで呼び出されると.validate()、コードは実際に爆撃します。user.save()

エラーをスローする必要があります:

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

私の Domain クラスがsrc/groovy.

于 2012-07-14T19:48:40.863 に答える