グローバル制約を作成しようとしたことはありませんが、フィールドを空白ではなく、null 不可としてマークしたい場合は、新しい制約を作成する必要はまったくなく、これをドメイン クラスに追加するだけです。
static constraints = {
email(blank:false)
}
もちろん、保存時に例外が発生することを期待している場合は、例外は発生しません。このドメイン クラスで示されているように、save() または validate() を呼び出した後にオブジェクトをテストする必要があります。
class Contact {
static constraints = {
name(blank:false)
}
String name
}
およびそのテストケース:
import grails.test.*
class ContactTests extends GrailsUnitTestCase {
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
void testNameConstraintNotNullable() {
mockDomain Contact
def contact = new Contact()
contact.save()
assertTrue contact.hasErrors()
assertEquals "nullable", contact.errors["name"]
}
}
保存時に例外が必要な場合は、Config.groovy に次の設定を追加できます。
grails.gorm.save.failOnError = true
開発において非常に有用であることがわかりました。
HTH
PS
定義した制約を使用するには、これをドメイン クラスに追加する必要があります。
static constraints = {
email(shared:"myConstraintName")
}
ただし、構成が読み取られていないため、組み込みのもののように単体テストで制約をテストすることはできません。