2

如果我有 2 个(或更多)具有 hasMany of 的域类,C我如何确定是否C添加了一个实体?

class A {
    String name
    static hasMany = [cs: C]
class B {
    String name
    static hasMany = [cs: C]
}
class C {
    String someProperty
}

// In CController add Action
//...
genericInstance.addToCs(cInstance)

我正在寻找更多我可以处理的事件。CController用于Aand的内联表单B,但我需要运行两个不同的进程,具体取决于C添加的域

4

2 回答 2

1

你可以addToCs在你的类AB.

class A {
    String name
    static hasMany = [cs: C]
    def addToCs = {
        // Do what you want with your value
        cs.add(C)
    }
}

注意默认情况下会发生什么addToCsDomainClassGrailsPlugin.groovy:289 @github

于 2013-01-08T10:48:51.060 回答
0

既然 A 和 B 具有相同的属性,为什么不将它们合并到一个域中呢?

我建议这样做:

class AB {
    char type
    String name
    static hasMany = [cs: C]

    static constraints = {
        type inList:['A','B']     //you can extend to 'C', 'D'... easily with this
    }
}
class C {
    String someProperty
}

在控制器中,您可以执行以下操作:

abInstance.addToCs(cInstance)
def domainTag = abInstance.type

那么 domainTag 就是你想要的。

于 2013-01-08T05:40:14.100 回答