假设你有这个:
class Event < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :event
end
对于某些管理界面,我想渲染一个包含这些数据点的表:
事件名称,过去2周的总订单,总订单
“过去2周”可以只是create_at&gt; 2.weeks.ago
如何有效查询前20个事件并显示此数据?也就是说,我不想要N + 1 查询此页面。
这些事件目前来自ThinkingSphinx。如果它有用,我也可以使用Redis。
答案 0 :(得分:0)
您可以在ActiveRecord中使用预先加载。它会将查询从N + 1减少到只有2个查询。
在您的EventsController中,您可以添加:
def index
@events = Event.includes(:orders)
end
更多详细信息,请参阅eager loading docs。