Da 3, 4, 2 ikke er en sekventiel rækkefølge, bør der være en brugerdefineret betingelse for at bestille dem korrekt, du kan gøre det ved at bruge CASE WHEN
udtryk
.
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)
Hvilket vil give 0
når users_count = 3
, 1
når users_count = 4
og 3
for andre sager. Med standard stigende rækkefølge får du det resultat, du ønsker.