我有一个 Payment 模型,它属于 CurrencyPaymentModeCurrencyPaymentMode 有很多 Payments

在我的付款的索引页面上,我有每笔付款的列表,我希望能够按货币和付款方式对它们进行排序。

例如,假设我有三种货币(瑞士法郎、美元、欧元)和两种付款方式(现金和蓝卡)。

我想获得的是这样的:

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

实现这一目标的最佳方法是什么?

提前致谢!

最佳答案

这样的事情怎么办?

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

关于ruby-on-rails - 创建嵌套散列来组织对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14517933/

10-13 04:34