Vì 3, 4, 2 không phải là thứ tự tuần tự, nên có một điều kiện tùy chỉnh để sắp xếp chúng đúng cách, bạn có thể làm điều đó bằng cách sử dụng CASE WHEN
biểu thức
.
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)
Điều này sẽ cung cấp cho 0
khi users_count = 3
, 1
khi users_count = 4
và 3
cho các trường hợp khác. Với thứ tự tăng dần mặc định, bạn sẽ nhận được kết quả như mong muốn.