將模型作爲對等模型關聯的最佳方式是什麼?ActiveRecord:對等模型
例如,考慮經典的銀行業例子
class Transaction < AR::Base
belongs_to :account
# attribute: amount decimal
end
class Account < AR::Base
has_many :transactions
# attribute name string
end
# move money like this:
t1 = Transaction.create(:amount=>10, :account=>Account.find_by_name('Mine'))
t2 = Transaction.create(:amount=>-10, :account=>Account.find_by_name('Yours'))
我想涉及的兩項交易,所以我可以從特定存款的確切撤軍這是它的對面去。
我可以添加這個到Transaction
型號:
belongs_to :mirror_transaction, :class_name=>'Transaction'
has_one :other_transaction, :class_name=>'Transaction', :foreign_key=>'mirror_transaction_id'
...但感覺有點噁心。我無法表達它比這更好!
我能想到的唯一的另一種方法是創建第三個包裝模式,是這樣的:
class TransactionSet < AR::Base
has_many :transactions
end
請注意,我不能簡單地延長我的交易模式涉及到兩個賬戶中的一個。一些付款「超出系統」,即他們不會配對。另外,在現實世界的問題中,模型要複雜得多,我不想把所有東西都加倍。
任何建議或其他想法?
TIA!