2

caches_action我見過的每一個例子如下:集caches_action,:expires_in =>動態

caches_action, :expires_in => 5.minutes 

但我想基於動作使用的對象的到期時間設定expires_in。在設置expires_in時有沒有什麼辦法引用該對象,因爲有問題的對象是基於params發送給該操作的?

我嘗試使用

caches_action, :expires_in => Object.find(params[:id]) 

,但可惜它不會讓我參考一下PARAMS那裏。建議歡迎!

回答

2

看起來你需要使用一個Proc,它可以通過控制器的params。這裏是一個例子

caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"} 
0

動作高速緩存的主要目的是防止每次有新的請求進入時執行動作。除非明確定義了明確的參數,否則不予考慮。

如果你想緩存基於實例,我會建議做Conditional Gets

+0

我的'params [:id]'是路由的一部分 - 類似'/ object /:id' - 因此它被分開緩存,因爲路徑是不同的。 – swrobel 2012-03-01 18:48:55