2012-07-20 74 views
1

比方說,你有這樣的:有效地查詢相關的聚集與活動記錄

class Event < ActiveRecord::Base 
    has_many :orders 
end 

class Order < ActiveRecord::Base 
    belongs_to :event 
end 

對於一些後臺管理界面,我想呈現這些數據點的表:

事件名稱,在總訂單過去兩週,總訂單

「過去兩週」正好可以created_at> 2.weeks.ago

如何有效地查詢第20個事件和迪展示這些數據?也就是說,我不想在此頁面上查詢N + 1 查詢。

這些事件目前正在從ThinkingSphinx中誕生。如果它有用,我也可以使用Redis。

回答

0

您可以使用ActiveRecord中的急切加載。它將把查詢從N + 1減少到只有2個查詢。

在你EventsController您可以添加:

def index 
    @events = Event.includes(:orders) 
end 

更多細節可以在eager loading docs找到。