Karena 3, 4, 2 bukan urutan berurutan, harus ada kondisi khusus untuk memesannya dengan benar, Anda dapat melakukannya dengan menggunakan CASE WHEN ekspresi
.
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)
Yang akan memberikan 0 ketika users_count = 3 , 1 ketika users_count = 4 , dan 3 untuk kasus lain. Dengan urutan menaik default, Anda akan mendapatkan hasil yang Anda inginkan.