我可以确定何时添加域类?

时间:2013-01-07 18:38:31

标签: grails gorm grails-2.0

如果我有2个(或更多)具有hasMany 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用于AB的内嵌表单,但我需要运行两个不同的流程,具体取决于添加到哪个域C

2 个答案:

答案 0 :(得分:1)

您可以在班级addToCsA中编写自己的B方法/关闭。

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

请注意默认addToCs中发生的情况: DomainClassGrailsPlugin.groovy:289 @github

答案 1 :(得分: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就是你想要的。