2011-02-04 32 views
0

我已經學會了如何使用Rails.cache.fetch功能緩存數據庫調用,但是,當我請求作出迴應,包括我的幾個相關的表的內容,例如緩存應答的用途包括

tracks = Rails.cache.fetch("events-by-track", :expires_in => 12.hours) do 
    Track.find(:all) 
end 
respond_with(tracks, :include => {:events => {:include => :speaker}}) 

這個緩存(我認爲)的呼叫Track.find(:所有),但它是否緩存包括的事件和揚聲器?

回答

0

不,它沒有緩存這些。您必須將這些內容也包含在內。例如,像這樣:

 
tracks = Rails.cache.fetch("events-by-track", :expires_in => 12.hours) do 
    Track.find(:all, :include => {:events => :speaker}) 
end 
respond_with(tracks) 

關聯對象的數組的例子:

 
tracks, events = Rails.cache.fetch("events-by-track", :expires_in => 12.hours) do 
    tracks = Track.find(:all, :include => [:events]) 
    events = tracks.collect(&:events) 
    tracks, events 
end 
respond_with(tracks) 
+0

您好,感謝,但是這給了我一個錯誤。沒有找到名爲'包括'的協會;也許你拼錯了嗎? – Sandro 2011-02-04 16:40:28