считать с has_many в рельсах - PullRequest
       13

считать с has_many в рельсах

3 голосов
/ 14 февраля 2010

У меня есть Order и Orderdetails

Orderdetails belongs_to Order

Order has_many Orderdetails

Я пытаюсь преобразовать следующий запрос в ActiveRecord count function

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

Я пытался:

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

Однако, это дает ошибку:

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

Редактировать Я поменял на заказ с

но теперь я получаю эту ошибку:

ActiveRecord :: StatementInvalid: PGError: ERROR: отсутствует предложение FROM Запись для таблицы «Заказы» ЛИНИЯ 1: ... unnt_all ОТ "orderdetails" ГДЕ (prodid = 6 и orders.cus ...

Ответы [ 2 ]

4 голосов
/ 14 февраля 2010

Вам нужно добавить :joins => :order', потому что ваше условие содержит элемент из таблицы заказов (поэтому вы получаете ошибку missing FROM-clause), попробуйте:

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

Также лучше (безопаснее) использовать массив в условиях:

@count = Orderdetail.count(:joins => :order, :conditions => ["prodid = ? and orders.custid = ?", 6, 11])
0 голосов
/ 14 февраля 2010

Я думаю, вы должны внимательно прочитать некоторые документы о том, как ассоциации работают в рельсах. Попробуйте это руководство .

Вам не нужно писать SQL в :conditions, чтобы делать то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...