2

我有一个包含两个整数字段的对象报告:月和年。我需要按“日期”排序

Report.desc(:year).desc(:month).each do |a|
puts a.year.to_s + " " + a.month.to_s
end

结果:

2011 12
2011 11
2012 7
2012 6
2012 5
2012 4
2012 3
2012 2
2012 1

虽然我想得到

2012 7
2012 6
2012 5
2012 4
2012 3
2012 2
2012 1
2011 12
2011 11

我究竟做错了什么?

Mongoid 标准如下所示:

irb(main):043:0> Report.desc(:year).desc(:month)

    => #<Mongoid::Criteria
       selector: {},
       options:  {:sort=>{"year"=>-1, "month"=>-1}},
       class:    Report,
       embedded: true>
4

1 回答 1

4

您获得的结果仅按月份排序,而不是按整个日期排序(因此您得到的结果)。也许将 sort_by 方法与同时考虑到年份和月份的主体一起使用?就像是:

Report.sort_by{|t| [-t.year, -t.month]}

编辑:我使用年份和月份的负数来实现降序。

于 2012-07-31T07:22:03.943 回答