通过以下查询,我按日期按降序排列记录,即从今天开始按时间顺序返回:
impressions = Impression.order(created_at: :desc).group_by {|impression| impression.created_at.to_date}
但是当循环嵌套的Hash
并输出每天的记录时,我希望按升序排列 - 即从特定日期创建的第一个记录开始。
我怎么能做到这一点?
答案 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}