У меня есть Order
модели, она имеет много items
, это выглядит, как этотКак получить значение суммарной стоимости дочерней модели для рубинов на рельсах?
class Order < ActiveRecord::Base
has_many :items
def total
items.sum('price * quantity')
end
end
И у меня есть индексный просмотр заказа, запрашивая таблицу заказа, как этого
def index
@orders = Order.includes(:items)
end
Тогда, по мнению, я получить доступ к общему порядка, в результате, вы увидите тонн SUM
запроса, как этого
SELECT SUM(price * quantity) FROM "items" WHERE "items"."order_id" = $1 [["order_id", 1]]
SELECT SUM(price * quantity) FROM "items" WHERE "items"."order_id" = $1 [["order_id", 2]]
SELECT SUM(price * quantity) FROM "items" WHERE "items"."order_id" = $1 [["order_id", 3]]
...
Это prett y медленно загружать order.total
один за другим, интересно, как я могу загрузить сумму в нетерпеливой манере с помощью одного запроса, но все же я могу получить доступ к order.total
, как и раньше.