所以我发现了这些问题:
这个宝石: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} }
然而,正如其他问题所解释的那样,这对于大量记录来说效率不高,我想我应该使用db中的分组,但我不知道如何获得我正在寻找的格式,我尝试过这样的事情,但我没有得到我所期待的:
list.order("date_trunc('day', created_at) DESC).map{ |k, v| { k => v }}
如何从数据库中按天分组记录?
答案 0 :(得分:4)
因为你最终做想要将所有记录加载到内存中,所以你的第一个解决方案(在Ruby中分组)实际上是你能做的最好的。利用SQL分组可以帮助优化,如果你只想,例如,获取每个组中的记录数,甚至是逗号分隔的记录名列表,但是 - 因为你实际上想要记录 - 没有办法获得事实上,你只需要获取所有记录。