如果我想使用域类,例如MoneyTransaction,有两个完全不同的目的,即:
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 :(得分:6)
根据您的要求,您发布的域类定义似乎是正确的。我在这里做的一个修改是添加一个自定义验证器,以确保订单和成员同时不为空。
static constraints = {
order(nullable: true, validator: {field, inst -> inst.member || field})
member(nullable: true)
}