0

その月のカウントがゼロであっても、月ごとにカウントグループを表示するために、以下を取得することに固執しています。

私が使用する場合、Railsコンソールから:

StorageRequest.select("MONTH(created_at) as month, COUNT(id) as total").where(:created_at => 3.months.ago.to_date..Date.today).group("month")

私は得ています:

| | 月 | 月 | 合計 |

| | 9 | 4 |

私が期待しているところ:

| | 月 | 月 | 合計 |

| | 8 | 0 |

| | 9 | 4 |

| | 10 | 0 |

これについてどうすればいいですか。

ありがとうございました。

4

1 に答える 1

1

これは少しハックですが、次のようなものが機能するはずです。

results = {}
StorageRequest.select("MONTH(created_at) as month, COUNT(id) as total").where(:created_at => 3.months.ago.to_date..Date.today).group("month").each { |m| results[m.month] = m.total }
(1..12).map { |m| [m, results[m] || 0] }

基本的に、データベースから結果をロードし、数か月にわたって反復してカスタム データ構造を構築します。カスタム構造の場合、利用可能な場合はカウントをデータベースの値に設定し、利用できない場合は 0 に設定します。

于 2013-10-29T20:26:33.367 に答える