Для рельсов 3 класса типа
class Item < ActiveRecord::Base
has_many :production_runs
has_many :deliveries
end
, где как производственные прогоны, так и поставки имеют атрибут «количество» для количества изделий в данном конкретном производстве или доставке.
Я хотел бы запросить элементы и (возможно, используя область?) Добавить сумму () величин из обеих таблиц к результату. Что-то вроде:
select items.*, (select SUM(production_runs.quantity) as runs from production_runs where production_runs.item_id = 42), (select SUM(deliveries.quantity) as dels from deliveries where deliveries.item_id = 42) from items where items.id = 42;
Что дает правильный результат для одного элемента, но я бы хотел как-то свернуть эти суммы в более общий запрос.
Я безуспешно пробовал добавлять области в классы Item, ProductionRun и Delivery. Было бы неплохо использовать область видимости, так как я мог бы связать ее с другими условиями по мере необходимости, но на самом деле я был бы рад любому общему решению, которое было бы более оптимальным, чем просто поиск наборов элементов и затем повторение.
Кто-нибудь знает лучший способ сделать это?
Спасибо