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

时间:2010-09-16 15:29:11

标签: grails model constraints validation gorm

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

例如

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]
                }
        })
   }
}

我对此很困惑。

提前致谢

1 个答案:

答案 0 :(得分:3)

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

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)
        }
    })
}

我不相信有一种方法可以根据属性值有条件地验证唯一性,而无需手动执行查询。