有没有办法编写自定义验证器,根据字段值执行不同的验证?
例如
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/