如果我想使用域类,例如MoneyTransaction,用于两个完全不同的目的,即:
1)当客户下订单时
2)会员获得报酬时
这样我有类似的东西:
class Order {
static hasMany = [transactions: MoneyTransaction]
}
class Member {
static hasMany = [payments: MoneyTransaction]
}
Run Code Online (Sandbox Code Playgroud)
和
class MoneyTransaction {
static belongsTo = [order: Order, member: Member]
static constraints = {
order(nullable: true)
member(nullable: true)
}
}
Run Code Online (Sandbox Code Playgroud)
然后本质上一次只使用一个belongsTo/association,这是非常"标准"的用法,还是我需要切换这个建模?现在MoneyTransaction同时具有信用卡和ACH支付功能,因为它们都适用于订单.对于付款,只使用ACH部分.
您发布的域类定义似乎是正确的,具体取决于您的要求.我在这里做的一个修改是添加一个自定义验证器,以确保订单和成员同时不为空.
static constraints = {
order(nullable: true, validator: {field, inst -> inst.member || field})
member(nullable: true)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4588 次 |
| 最近记录: |