设置caches_action,:expires_in =>动态

时间:2012-03-01 17:02:11

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 action-caching

我见过的caches_action的每个例子都是:

caches_action, :expires_in => 5.minutes

但我想根据操作中使用的对象的到期时间设置expires_in。设置expires_in时是否有任何方法可以引用该对象,因为相关对象基于发送到操作的params

我尝试使用

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

但是唉它不会让我参考那里的params。建议欢迎!

2 个答案:

答案 0 :(得分:2)

看起来你需要使用一个可以通过控制器参数的Proc。这是一个例子

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

答案 1 :(得分:0)

主要的行动点缓存是为了防止每次新请求进入时都会运行操作。除非明确定义,否则不考虑参数。

如果你想基于我建议做Conditional Gets的实例进行缓存。