2010-02-14 7 views
3

J'ai un Order et Orderdetailscomte avec has_many dans des rails

Orderdetails belongs_to Order 

Order has_many Orderdetails 

Je suis en train de convertir la requête suivante pour ActiveRecord count fonction

select Count(*) 
from orderdetails A, orders B 
where A.prodid='6' and A.orderid= B.id and B.custid='11' 

J'ai essayé:

@count = Orderdetail.count(:conditions => "prodid = 6 and order.custid = 11") 

Cependant, cela donne une erreur:

PGError: ERROR: syntax error at or near "order" 
LINE 1: ...unt_all FROM "orderdetails" WHERE (prodid = 6 and order.cust... 

Modifier j'ai changé pour commander s

mais maintenant j'obtiens cette erreur:

ActiveRecord::StatementInvalid: PGError: ERROR: missing FROM-clause entry for table "orders" LINE 1: ...unt_all FROM "orderdetails" WHERE (prodid = 6 and orders.cus...

+0

Le nom de la table ne devrait-il pas être «commandes»? – giorgian

+0

dope. ça a arrangé quelque chose. maintenant je reçois une erreur différente. comment puis-je ajouter des commandes dans le? – ratan

Répondre

4

Vous devez ajouter :joins => :order', parce que votre état contient l'élément de la table des commandes (c'est pourquoi vous obtenez l'erreur missing FROM-clause), essayez:

@count = Orderdetail.count(:joins => :order, :conditions => "prodid = 6 and orders.custid = 11") 

également mieux (plus sûr) d'utiliser le tableau dans des conditions:

@count = Orderdetail.count(:joins => :order, :conditions => ["prodid = ? and orders.custid = ?", 6, 11]) 
-1

Je pense que vous devriez lire attentivement certains documents sur la façon dont les associations travaillent dans des rails. Try this guide.

Vous n'avez pas besoin d'écrire de code SQL dans :conditions pour faire ce dont vous avez besoin.

+0

ce guide ne mentionne rien sur la façon de faire compter par activerecord? – ratan

+0

Une fois que vous connaissez le fonctionnement des associations, vous pouvez commencer à lire des documents: Comme les docs de 'count' - http://api.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html#M002187 – rfunduk