Aangezien 3, 4, 2 geen opeenvolgende volgorde is, moet er een aangepaste voorwaarde zijn om ze correct te bestellen. U kunt dit doen door de CASE WHEN
uitdrukking
.
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)
Dat geeft 0
wanneer users_count = 3
, 1
wanneer users_count = 4
, en 3
voor andere gevallen. Met standaard oplopende volgorde krijgt u het gewenste resultaat.