いずれかが null になる可能性があるが、同時に両方が可能ではない 2 つのフィールドがあるドメインがあります。だから、このようなもの
class Character {
Association association
String otherAssociation
static constraints = {
association (validator: {val, obj-> if (!val && !obj.otherAssociation) return 'league.association.mustbeone'})
otherAssociation (validator: {val, obj-> if (!val && !obj.association) return 'league.association.mustbeone'})
}
}
しかし、次のようなテストを実行すると、失敗するだけです
void testCreateWithAssociation() {
def assoc = new Association(name:'Fake Association').save()
def assoccha = new Character(association:assoc).save()
assert assoccha
}
void testCreateWithoutAssociation() {
def cha = new Character(otherAssociation:'Fake Association').save()
assert cha
}
私は何を間違っていますか?
編集 コードを次のように分割すると、次のようになります。
def assoc = new Association(name:'Fake Association')
assoc.save()
すべて正常に動作します。しかし、他のテストでこれを行うのと同じ行に .save() を含めることができない理由を知りたいのですが、それは機能します。