2011-12-26 84 views
4

如果我想使用域类,例如MoneyTransaction,两个完全不同的目的,即:grails - 使用多个belongsTo,但一次只能使用一个

1)当客户当一个成员得到支付

这样的,我有什么样的顺序

2):

class Order { 
    static hasMany = [transactions: MoneyTransaction] 
} 

class Member { 
    static hasMany = [payments: MoneyTransaction] 
} 

class MoneyTransaction { 
    static belongsTo = [order: Order, member: Member] 
    static constraints = { 
     order(nullable: true) 
     member(nullable: true) 
    } 
} 

,然后在本质只有一次使用一个belongsTo/association,这是非常“标准”的用法,还是我需要切换这种建模?现在MoneyTransaction同时具有信用卡和ACH支付功能,因为两者都适用于订单。对于付款,只使用ACH部分。

+0

我想你想摆脱属于。否则你会有多对多的关系,我不相信你想要 – 2011-12-27 06:18:32

回答

6

根据您的要求,您发布的域类定义看起来是正确的。我在这里做的一个修改是添加一个自定义验证器,以确保订单和成员在同一时间不为空。

static constraints = { 

    order(nullable: true, validator: {field, inst -> inst.member || field}) 
    member(nullable: true) 

    } 
+0

谢谢,也提供了额外的限制。 – Ray 2011-12-27 16:23:57