按日期降序分组,但按日期升序输出记录

时间:2014-01-05 09:36:19

标签: ruby-on-rails ruby ruby-on-rails-4 group-by

通过以下查询,我按日期按降序排列记录,即从今天开始按时间顺序返回:

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

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

我怎么能做到这一点?

1 个答案:

答案 0 :(得分: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..>]]]

但我不明白,为什么要在数据库中对desc进行排序,然后又需要asc订单?为什么不在声明中使用asc

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