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