【发布时间】:2016-03-08 16:45:49
【问题描述】:
所以我发现了这些问题:
- How to group and count by day in Rails in Postgres?
- Grouping by week/month/etc & ActiveRecord?
- How do I group by day instead of date?
还有这个宝石:https://github.com/ankane/groupdate
我希望按天对记录进行分组,格式如下:
[
{ "2016-03-16" => [Record1, Record2, Record3] },
{ "2016-03-17" => [Record1, Record2] },
{ "2016-03-18" => [Obj1, Obj2] }
]
我已经能够使用此代码获得这种格式:
def group_by_criteria
created_at.to_date.to_s
end
list.group_by(&:group_by_criteria).map {|k,v| { k => v} }
但是,正如其他问题中所解释的,这对于大量记录来说效率不高,我想我应该使用数据库中的分组,但我不确定如何获得我正在寻找的格式,我尝试过这样的事情,但我没有得到我期望的结果:
list.order("date_trunc('day', created_at) DESC).map{ |k, v| { k => v }}
我怎样才能像这样从数据库中按天对记录进行分组?
【问题讨论】:
-
我能看到的唯一其他方法是每天查询一次,这并不可怕,但比在 ruby 中更简单/高效。但是,它可能会对您的数据库征税。但是你可以添加缓存,这会有所帮助。这么多变量,这真的取决于你的用例。