2011-02-04 31 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