2013-01-25 108 views
3

我有一個Payment模型,它屬於CurrencyPaymentModeCurrencyPaymentMode有很多Payments創建一個嵌套的哈希來組織對象

在付款的索引頁上,我列出了每筆付款,我希望能夠按貨幣和付款方式對其進行分類。比如說我有三種貨幣(瑞士法郎,美元,歐元)和兩種支付模式(現金和藍卡)。

我想要得到的是這樣的:

{ 
    CHF => { 
      Cash => [array of corresponding payments], 
      BlueCard => [...]}, 
    Dollars => { 
       Cash => [...], 
       BlueCard => [...]}, 
    Euros => { 
      Cash => [...], 
      BlueCard => [...]} 
} 

什麼是實現這一目標的最佳途徑?

在此先感謝!

+0

你是什麼意思的「最好」?對我來說,最好的方式肯定是使用對象。這不是Perl;) – iain

+0

事實上,我不認爲你真的需要這個散列。你能解釋一下,你將如何使用它? –

+0

@ roman.brodetski我需要這個散列函數來計算每個嵌套散列的總價格,例如瑞士法郎的現金支付和與蝦生成PDF。 – siekfried

回答

4

這樣的事情呢?

def get_hash_from_payments(payments) 
    result_hash = {} 
    payments.each do |payment| 
    result_hash[payment.currency.symbol] ||= {} 
    result_hash[payment.currency.symbol][payment.payment_mode.name] ||= [] 
    result_hash[payment.currency.symbol][payment.payment_mode.name] << payment #Or whatever info you need from payment. 
    end 
    result_hash 
end 
+1

非常感謝你,這正是我所喜歡的;) – siekfried