【发布时间】:2014-01-20 15:55:16
【问题描述】:
在 Grails 2.3.4 应用程序中,我有一个表示作者和文章之间关系的域类。它包含三个属性:
- 类型id(代表作者(1)、查看者(3)等类型)
- 会员
- 文章
-
class Article {
static hasMany = [ relations: ArticleRelation ]
string title
}
class ArticleRelation {
static belongsTo = [ article: Article ]
int type
Member member
}
某些类型在语义上不允许创建超过一对类型+作者。例如:
- 每篇文章只能有一个作者
其他类型+作者没有这个限制。例如:查看器。
我在域类中寻找一种验证方法,该方法可以根据类型的值保证类型+作者对的唯一性。
类似:
static constraints = {
member unique: if (type == 1 || type == 2)
}
是否可以在 Grails 域类中编写这样的约束?
--编辑--
事实上,我发现条件需要不同的写法:类型+文章需要是唯一的对才能正确描述包含。
所以 ArticleRelation 中的约束是
static constraints = {
article validator: { val, obj ->
if ((obj.type == 1) || (obj.type == 2)) {
if (ArticleRelation.countByArticleAndType(val, obj.type) > 0) return ['myNotUniqueErrorKey']
}
}
}
【问题讨论】:
标签: validation grails constraints grails-domain-class