0

Receipt というモデルがあり、次のものがあります。

  • 購入日 - 日時
  • total_value - フロート

多くの領収書を含むデータベースがあります。次に例を示します。

領収書 1

  • 購入日 = 2012-01-23
  • 合計値 = 6

領収書 2

  • 購入日 = 2012-01-04
  • 合計値 = 70

領収書 3

  • 購入日 = 2013-02-14
  • 合計値 = 1.23

領収書 4

  • 購入日 = 2013-02-06
  • 合計値 = 90.34

...

領収書 123

  • 購入日 = 2013-08-05
  • 合計値 = 43.69

次のように表示するにはどうすればよいですか。

{2012=>{1=>76}, 2013=>{2=>92.23, 3=> 34.43, ...}}

?

4

1 に答える 1

1

以下はうまくいくはずです

receipts = Receipt.find_by_sql("SELECT MONTH(date_of_purchase) AS month, 
                       YEAR(date_of_purchase) AS year, SUM(total_value) as sum
                       FROM receipts GROUP BY year, month")

receipts_hash = {}
receipts.each do |receipt|
  receipts_hash[receipt.year] = {} unless receipts_hash[receipt.year]
  receipts_hash[receipt.year][receipt.month] = receipt.sum
end
于 2013-08-05T06:19:09.367 に答える