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 に答える