2012-01-07 53 views
0

我的帳單結算應用程序記錄多個付款/發票。我遇到的問題是客戶可以用高於現金的現金支付。因此,當我查看摘要時,現金總額大於欠款額,因此對於我得到的報酬(因爲我給予了更改)並不是一個現實的觀點。所以基本上我想要做的是重寫付款集合,以便如果我給它一個(true)的參數,它會顯示我所有的付款,但任何欠客戶的金額都將從現金付款中扣除。Rails擴展has_many集合以包含修改結果的另一個參數

實施例1:
發票共計$ 25
INTERAC付費:$ 10
現金支付:$ 20
變化:$ 5

實施例2(用現金返還):
發票共計$ 25
Interac支付方式:$ 30
更改:$ 5

在我Invoice.rb型號:

has_many :payments, :dependent => :destroy do 
    def ???(actual_amounts = false) 
     // call to super() ??? 
     // Find any cash payments and override value to account for change. 
     // If there isn't a cash payment, make one. 
    end 
end 

因此,這些都是我所期待的這兩個例子的結果:

例1:
電話@invoice.payments得到$ 10和$ 20分別爲
致電@invoice.payments(true)分別得到10美元和15美元

例2:
電話@invoice.payments產生$ 30
電話@invoice.payments(true)產生$ 30 INTERAC和 - $ 5現金

+0

它是否在'付款'協會?因爲一旦你開始讓你的關聯返回值而不是「關係」,那麼就沒有回頭路了。 – Azolo 2012-01-07 03:33:05

+0

這是一個很好的觀點。我會完全避免它。 – JakeTheSnake 2012-01-07 03:37:39

+0

好人。然而,如果你想編輯你的問題來做一些類似'def with_surplus'的事情,我可以告訴你我可以怎麼做。 – Azolo 2012-01-07 04:00:56

回答

0

我只是發票模型顯示 '返回變化' 裏面做了一個自定義的方法。事實證明,顯示「實際支付的內容」是沒有意義的......特別是當我想將發票支付與我們的支付處理器記錄進行比較時。