0

我有一个约会集合,其中有一个start_dateDateTime 字段。

我需要对这些约会进行排序,所以我有

  • 即将到来的约会首先
  • 然后是“过去”的约会,最近的在前

即假设我有

我使用相对时间来举例说明,请记住我必须与 Time.now 进行比较的代码

[ in_two_days, two_days_ago, tomorrow, yesterday]

我想要那种返回

[ 
  # First upcoming
  tomorrow, 
  in_two_days,
  # Then most recent first
  yesterday, 
  two_days_ago
]

我正在使用 Mongoid,但由于数组中的项目很少,我会接受使用数组方法而不是标准的解决方案(尽管具有 mongoid 标准的解决方案会更好)

4

1 回答 1

2
upcoming, past = appointments.sort_by(&:start_date).partition{ |a| a.start_date.future? }
sorted = [*upcoming, *past.reverse]
于 2016-06-25T19:14:00.467 回答