Post オブジェクトのコレクションがあり、次の条件に基づいて並べ替えできるようにしたいと考えています。
- まず、カテゴリ別 (ニュース、イベント、ラボ、ポートフォリオなど)
- 日付の場合は日付順、特定のインデックスが設定されている場合は位置順
いくつかの投稿には日付 (ニュースとイベント) があり、他の投稿には明示的な位置 (ラボとポートフォリオ) があります。
を呼び出せるようにしたいposts.sort!
ので、オーバーライド<=>
しましたが、これらの条件でソートする最も効果的な方法を探しています。以下は疑似メソッドです。
def <=>(other)
# first, everything is sorted into
# smaller chunks by category
self.category <=> other.category
# then, per category, by date or position
if self.date and other.date
self.date <=> other.date
else
self.position <=> other.position
end
end
その 1 つのメソッドにすべてを詰め込むのではなく、実際には 2 つの別々の時間をソートする必要があるようです。のようなものsort_by_category
ですsort!
。これを行うための最もルビーな方法は何ですか?