2011-12-26 63 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

相關問題