grails - 如何在 Grails 中对域类中的关系施加约束?

标签 grails groovy constraints grails-domain-class grails-validation

我有一个像这样的域三域类:

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 startDateendDate 不在用户假期startDateendDate范围内。如果有则抛出错误。

我想要一种方法来将此约束施加到我的域类本身(即任务)上。

可以这样做吗?

提前致谢。

最佳答案

您可以使用自定义验证器来完成此操作。

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/

相关文章:

mysql - 将 MySQL 与 Netbeans 中的 Grails 项目连接起来

grails - 如何在 Grails Controller 中使用 twitter api 1.1 搜索特定的 HashTag

performance - Grails 3.1应用的内存监控

grails - 是否可以以编程方式构建 grails 配置属性键?

Grails 应用程序根上下文

mysql添加外键错误1215

ajax - Grails:将javascript变量传递给模板

grails - 列是类的排序集时的Groovy表排序

swift - heightAnchor.constraint 不改变 View 高度

具有来自另一个表的条件的数据库约束