Тъй като 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
за други случаи. С възходящ ред по подразбиране ще получите желания резултат.