Вот что я хотел бы сделать:
class A {
String string
static constraints = {
string(maxSize:100)
}
}
class B extends A {
static constraints = {
string(url:true)
}
}
Таким образом, класс A должен иметь некоторые ограничения, а B должен иметь то же самое плюс дополнительные ограничения на то же свойство.
Хотя я не мог заставить это работать, и я могу представить, что это вступит в противоречие с концепцией «Таблица на иерархию».
Поэтому я попытался обойти эту проблему, введя объект Command с ограничениями класса B, которые можно проверить в конструкторе класса B. Однако кажется, что объекты Command можно использовать только внутри контроллеров (grails продолжает говорить, что существует для него нет метода .validate ()).
Итак, мой вопрос: каков наиболее элегантный способ решить эту проблему, используя ограничения Grails (без повторной реализации проверки вручную)? Может быть ...
- Переключение на концепцию «Таблица на подкласс»?
- Как заставить объект Command работать в классе Domain как-нибудь?
- Любой другой способ?
Редактировать: Было бы хорошо, если бы я определил все ограничения в дочерних классах, повторяя ограничения родительского класса или вообще не имея ограничений в родительском классе. Но решение должно работать для нескольких дочерних классов (с различными ограничениями) одного и того же родительского класса.