3、4、2は順次注文ではないため、適切に注文するにはカスタム条件が必要です。 CASE WHEN
式
。
order_sql = Arel.sql(
'CASE WHEN users_count = 3 THEN 0 ' \
'WHEN users_count = 4 THEN 1 ' \
'ELSE 3 END'
)
Group.where(users_count: [2,3,4]).order(order_sql)
0
が得られます users_count = 3
の場合 、1
users_count = 4
の場合 、および3
その他の場合。デフォルトの昇順を使用すると、希望する結果が得られます。