仕事をしている中で、ステータスの値を使って特定の順番に並び替えてからフロントに返したいということがありました。
ステータスはenumで定義されていますが、指定された順番は定義順ではなかったため一工夫必要だなと思いつつ考えてみると初めての作業でした。
良い方法がないか検索すると、やはりありました
やり方
- 並び替えたい順番でステータスの値を配列で定義
TEST_ORDER = %w[aaa bbb ccc]
- 並び替えたいデータにsort_byを行い、sort_byの方法を1で指定した配列のindex順になるように指定
test_arr.sort_by { |test| TEST_ORDER.index(test.status) }
以上
注意点としては、
今回、私はControllerのメソッドで行いましたが、並び替えたい順番で値を配列で定義するのをメソッドの外で行うこと
そうしないとエラーになりました。
今回の件に限った話ではないのですが
結構シンプルにできたの満足