2014-01-05 54 views
1

用下面的查询我得到按日期分组的记录按降序排列,即从今天开始,并要回按时间顺序:分组按日期升序排列降序排列,但输出日期内的记录

impressions = Impression.order(created_at: :desc).group_by {|impression| impression.created_at.to_date} 

但是,当循环嵌套的Hash并输出每天的记录时,我希望按升序排列这些记录 - 即从当天创建的第一条记录开始。

我怎么能这样做?

回答

2

试试这个,但是要知道,对于大集合,性能可能是个坏:

impressions = Impression.order(created_at: :desc).group_by {|impression| impression.created_at.to_date} 
puts impressions.sort 
# [[Sun, 05 Jan 2014, [#<Impressions id: 1..>,#<Impressions id: 2..>]], [Fr, 03 Jan 2014, [#<Impressions id: 3..>,#<Impressions id: 4..>]]] 

但我不明白,你为什么选在DB desc,然后你想有一个asc顺序?你为什么不在你的陈述中使用asc

impressions = Impression.order(created_at: :asc).group_by {|impression| impression.created_at.to_date} 
+0

好吧,'impression.sort'做到了!那很简单,谢谢。 (我想按照时间顺序向后显示按日期分组的记录,但每个“日组”中的记录应该按时间显示。) –