PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

le rotaie ordinano per ordine specifico

Poiché 3, 4, 2 non è un ordine sequenziale, dovrebbe esserci una condizione personalizzata per ordinarli correttamente, puoi farlo utilizzando il CASE WHEN espressione .

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)

Che darà 0 quando users_count = 3 , 1 quando users_count = 4 e 3 per altri casi. Con l'ordine crescente predefinito otterrai il risultato che desideri.