我见过的caches_action
的每个例子都是:
caches_action, :expires_in => 5.minutes
但我想根据操作中使用的对象的到期时间设置expires_in
。设置expires_in
时是否有任何方法可以引用该对象,因为相关对象基于发送到操作的params
?
我尝试使用
caches_action, :expires_in => Object.find(params[:id])
但是唉它不会让我参考那里的params。建议欢迎!
答案 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的实例进行缓存。