Как добавить ограничения на унаследованные свойства в подклассе домена grails

Вот что я хотел бы сделать:

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 ()).

Итак, мой вопрос is: Какой самый элегантный способ решить эту проблему с использованием ограничений grails (без повторной проверки вручную)? Может быть...

  • Переключение на концепцию «таблица на подкласс»?
  • Заставить как-то работать объекту команды в классе домена?
  • Любой другой способ?

Изменить: Для меня было бы нормально определить все ограничения в дочерних классах, повторяя ограничения родительского класса или даже не имея ограничений в родительском классе. Но решение должно работать для нескольких дочерних классов (с разными ограничениями) одного и того же родительского класса.

23
задан Jörg Brenninkmeyer 16 October 2010 в 14:32
поделиться