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 これにより、間違いなくバグのように見えます。