Vzhledem k tomu, že 3, 4, 2 není sekvenční pořadí, měla by existovat vlastní podmínka pro jejich správné uspořádání, můžete to udělat pomocí CASE WHEN
výraz
.
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)
Což dá 0
když users_count = 3
, 1
když users_count = 4
a 3
pro jiné případy. S výchozím vzestupným pořadím získáte požadovaný výsledek.