【发布时间】:2015-05-07 21:43:05
【问题描述】:
我有一个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]]
...
一个一个地加载order.total很慢,我想知道如何通过单个查询以急切的方式加载总和,但我仍然可以像以前一样访问order.total。
【问题讨论】:
标签: ruby-on-rails rails-models