単純にするために、属性に列挙型を使用することを避け、代わりに文字列値を格納しています。
配列内のすべての可能な値のリストを事前に決められた順序で持っています。MyTypeEnum.names
そして、レコードの ActiveRecord::Relation リストがありますmy_recs = MyModel.order(:my_type)
MyTypeEnum.names の値の配列で指定された順序で、 my_recs のレコードを :my_type 属性値で並べ替える最良の方法は何ですか?
私はこれを試すことができます:
my_recs = MyModel.order(:my_type)
ordered_recs = []
MyTypeEnum.names.each do |my_type_ordered|
ordered_recs << my_recs.where(:my_type => my_type_ordered)
end
しかし、ActiveRecord::Relation を使用する代わりに配列を構築することで、パフォーマンスが低下しているのでしょうか? よりクリーンな方法はありますか?(注: 順序付けに柔軟性を持たせたい場合があるため、上記のように順序が MyTypeEnum.names の順序でハードコードされているとは想定したくありません)