Rails 3 ActiveRecord запрос: найдите номер этого продукта, который был заказан этим пользователем - PullRequest
2 голосов
/ 01 апреля 2011

У меня есть модель order, которая belongs_to :user, модель product, модель соединения order_product:

class OrderProduct < ActiveRecord::Base
  belongs_to :order
  belongs_to :product
end

Модель order_product имеет столбец quantity.

Как узнать, сколько продуктов p было заказано пользователем u?Я хотел бы найти решение, которое использует синтаксис запроса активных записей rails 3 и, насколько это возможно, выполняется на уровне базы данных.Буду признателен за любую помощь.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Это должно сработать:

u.order_products.where(:product_id => p.id).sum(:quantity)

Это один SQL-запрос, подходящий для отображения одного продукта. Если вы отображаете несколько продуктов, вы должны сгруппировать их по идентификатору продукта, что даст вам хэш значений, по которым вы будете искать.

0 голосов
/ 01 апреля 2011

Это может быть что-то вроде ниже, если вы хотите использовать Rails 3 цепочку запросов

p.order_product.includes ("order"). Where (: orders => {: user_id => 'user_id'}). Sum (: количество)

Попробуй посмотреть, работает ли, может быть, я что-то упустил

...