валидатор класса домена grails + установить уникальное ограничение в соответствии со значениями поля? - PullRequest
3 голосов
/ 16 сентября 2010

Есть ли способ написать собственный валидатор, который будет выполнять разные проверки в соответствии со значениями полей?

Например

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 Ответ

3 голосов
/ 16 сентября 2010

Хотя это и не самое элегантное решение, оно должно работать:

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

Я не верю, что есть способ условно проверить уникальность на основе значений свойств без выполнения запроса вручную.

...