2017-07-30 4 views
0

Je suis dans la console de rails essayant de trouver tous les utilisateurs avec plus d'un ordre qui ont l'état "terminé".Utiliser les jointures, avoir et où dans la console

Cette ligne me donne tous les utilisateurs avec plus de 1 ordre général, que ce soit ou non l'état de la commande est terminée, remboursée ou errored:

User.joins(:orders).group("users.id").having("count(orders)>1") 

Im essayant d'obtenir quelque chose comme ceci:

User.joins(:orders).group("users.id").having("count(orders.where(state: "completed"))>1") 

Ceci est ma première utilisation de jointures et avoir, et je suis confus pourquoi cela ne fonctionne pas, et j'ai cherché cela depuis un certain temps maintenant.

Répondre

1

Cela devrait fonctionner

User.joins(:orders).where(orders: {state: "completed"}).group("users.id").having("count(orders)>1") 
+0

Il a parfaitement fonctionné, je vous remercie! – Hamza1510