我有一个像这样的域三域类:
Tasks.groovy
class Tasks {
static belongsTo = [ user : User ]
//other fields
Date startDate
Date endDate
}
User.groovy
class User {
//relationships. . . .
static belongsTo = [ company : Company, role : Role, resource : Resource]
static hasMany = [ holidays : Holiday, tasks : Tasks]
//other fields
}
Holiday.groovy
class Holiday {
static belongsTo = User
Date startDate
Date endDate
//other fields
}
现在,当我创建一个 Tasks
实例时,我想设置一个约束,使得 Tasks
startDate
和 endDate
不在用户
的假期
的startDate
和endDate
范围内。如果有则抛出错误。
我想要一种方法来将此约束施加到我的域类本身(即任务
)上。
可以这样做吗?
提前致谢。
最佳答案
您可以使用自定义验证器来完成此操作。
startDate(validator: {val, obj->
obj.user.holidays.every{holiday-> val <= holiday.startDate || val >= holiday.endDate }
})
您可以将自定义验证逻辑封装为闭包。您还必须为 endDate 添加类似的逻辑。
关于grails - 如何在 Grails 中对域类中的关系施加约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426114/