2016-02-28 80 views
0

我试图将我的Events表组合在我的月份和范围内,以便我可以在图表中呈现它(我使用chartKick gem)。活动有一个start_date和一个end_date,所以如果一个活动在二月份开始,在二月份结束,它将被视为一个二月份的活动,但是如果活动在二月份开始并在三月份结束,它将被视为三月份活动。我想要的格式是:Rails 4 - 按月间隔分组日期范围

{“JAN”=> 2,“FEB”=> 3,“MAR”=> 5,“APR”=> 10,“MAY”=> 5,“JUNE”= > 0, “JULY”=> 12, “AUG”=> 4, “SEPT”=> 17, “OCT”=> 8, “NOV”=> 0, “DEC”=> 3}

右现在我使用的东西很简单,不会做我想要的东西:

<%= pie_chart Event.group(["DATE(created_at)"]).count %> 

任何人都可以帮助我获得正确的查询吗?

感谢

+0

你需要这个:https://github.com/humzashah/convenient_grouper – Humza

+0

谢谢你的提示!我尝试过:'Event.group({start_time:{Jan:Date.new(2016,1).. Date.new(2016,1,31)}})'但我越来越:“# “ –

+0

因为你到目前为止只对它们进行分组。您需要在该对象上调用'.count',就像您在示例中所使用的一样。 – Humza

回答

0

感谢@Humza,我终于得到了它,我不喜欢这样的:

<%= pie_chart Event.group({start_time: {Jan: Date.new(2016,1)..Date.new(2016,1,31), Fev: Date.new(2016,2)..Date.new(2016,2,29), MAR: Date.new(2016,3)..Date.new(2016,3,31), APR: Date.new(2016,4)..Date.new(2016,4,30), MAY: Date.new(2016,5)..Date.new(2016,5,31), JUN: Date.new(2016,6)..Date.new(2016,6,30), JUL: Date.new(2016,7)..Date.new(2016,7,31), AUG: Date.new(2016,8)..Date.new(2016,8,31), SEP: Date.new(2016,9)..Date.new(2016,9,30), OCT: Date.new(2016,10)..Date.new(2016,10,31), NOV: Date.new(2016,11)..Date.new(2016,11,30), DEZ: Date.new(2016,12)..Date.new(2016,12,31)}}).count %>