Aquí es lo que me gusta hacer:¿Cómo añadir restricciones sobre las propiedades heredadas en un dominio griales subclase
class A {
String string
static constraints = {
string(maxSize:100)
}
}
class B extends A {
static constraints = {
string(url:true)
}
}
Así clase A debe tener algunos limitaciones y B deben tener los mismos más restricciones adicionales en la misma propiedad.
No pude hacerlo funcionar y puedo imaginar que chocaría con el concepto Tabla por jerarquía.
Así que traté de evitar ese problema introduciendo un objeto Command con restricciones de clase B que pueden validarse en el constructor de clase B. Sin embargo, parece que los objetos Command solo pueden usarse dentro de los controladores (Grails sigue diciendo que hay no es el método .validate() para él).
Así que mi pregunta es: ¿Cuál es la manera más elegante de resolver esto usando las restricciones de Grails (no reimplementando la validación manualmente)? Podría ser ...
- Pasar al concepto de Tabla por subclase?
- ¿El Objeto de Comando funciona de alguna manera en la clase de Dominio?
- ¿Alguna otra forma?
Editar: que estaría bien para mí definir todas las restricciones en las clases hijas, repitiendo las limitaciones de la clase padre o ni siquiera tienen limitaciones en la clase padre en absoluto. Pero la solución debería funcionar para múltiples clases secundarias (con diferentes restricciones) de la misma clase principal.
No estoy seguro de que cada restricción va a funcionar de esta manera, ya que por defecto hereditario clases se asignan a una misma mesa DB. Así que si tiene la clase C con restricciones únicas no nulas en C.c, impondrá la restricción de la tabla DB en toda la tabla A - y el campo c estará allí para todas las clases, y será nulo para todo menos para las instancias C. –
Sí, es por eso que traje Table-per-Sub-Class en juego. –