Eftersom 3, 4, 2 inte är en sekventiell ordning bör det finnas ett anpassat villkor för att beställa dem korrekt, du kan göra det genom att använda CASE WHEN
uttryck
.
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)
Vilket ger 0
när users_count = 3
, 1
när users_count = 4
och 3
för andra fall. Med stigande standardordning får du det resultat du vill ha.