grails域类验证器+根据字段值设置唯一约束?

标签 grails model constraints validation grails-orm

有没有办法编写自定义验证器,根据字段值执行不同的验证?

例如

class myModel{

   A a;
   B b;
   String prop
   static belongsTo:[m:myModel]

   constraints{
       prop(validator:{
          val,obj->
                if (obj.a== null){
                  unique:[b,prop]
                }
                else{
                  unique:[a,b,prop]
                }
        })
   }
}

我对此很困惑。

提前致谢

最佳答案

虽然这不是最优雅的解决方案,但应该可行:

static constraints = {
    prop(validator: { val, obj ->
        if(obj.a == null) {
            return !myModel.findWhere(b: obj.b, prop: val)
        } else {
            return !myModel.findWhere(a: obj.a, b: obj.b, prop: val)
        }
    })
}

我认为没有一种方法可以在不手动执行查询的情况下根据属性值有条件地验证唯一性。

关于grails域类验证器+根据字段值设置唯一约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3728221/

相关文章:

grails - 更新cron作业的触发器

php - CodeIgniter/胖模型/瘦 Controller

algorithm - worker 调度算法

apache - Grails urlmappings : Different responses for subdomain and domain root "/" possible?

grails - Grails 3 set-version替换

json - Groovy 中映射到字符串/字符串到映射的转换

javascript - 我如何从这个 JSON 构建 Mongoose 模型

java - 从 JSON 格式的服务器响应获取 token

python - PuLP:每组仅使用一项

oracle - 捕获触发 DUP_VAL_ON_INDEX 的值