PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

rails trier par ordre spécifique

Étant donné que 3, 4, 2 n'est pas un ordre séquentiel, il devrait y avoir une condition personnalisée pour les commander correctement, vous pouvez le faire en utilisant le CASE WHEN expression .

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)

Ce qui donnera 0 quand users_count = 3 , 1 quand users_count = 4 , et 3 pour les autres cas. Avec l'ordre croissant par défaut, vous obtiendrez le résultat souhaité.