Tengo un problema donde mi clase de dominio tiene dos posibles claves externas mutuamente excluyentes, ya sea un número de serie o un valor de búsqueda heredado.¿Cómo creo y la validación XOR para dos campos en una clase de dominio Grails?
Dado que no estoy seguro de cuál voy a tener para una entrada determinada, las he convertido en anulables y he añadido una validación personalizada para intentar asegurar que tengo un solo valor.
package myproject
class Sample {
String information
String legacyLookup
String serialNumber
static constraints = {
information(nullable: true)
legacyLookup(nullable: true)
serialNumber(nullable: true)
legacyLookup validator: {
return ((serialNumber != null && legacyLookup == null) || (serialNumber == null && legacyLookup != null))
}
serialNumber validator: {
return ((serialNumber != null && legacyLookup == null) || (serialNumber == null && legacyLookup != null))
}
}
}
creé las pantallas CRUD defecto y trataron de crear una entrada para esta clase de dominio
information: Blah Blah
serialNumber:
legacyLookup: BLAHINDEX123
Esta muere en el validador con el siguiente mensaje:
No such property: serialNumber for class: myproject.Sample
¿Qué soy yo ¿desaparecido?
Esto hizo exactamente lo que necesitaba. Estaba pensando que necesitaba una validación explícita en ambos campos, pero uno maneja el otro. ¡Gracias! – GeoGriffin