2

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

caches_action, :expires_in => 5.minutes

但我想expires_in根据操作中使用的对象的到期时间进行设置。expires_in由于有问题的对象是基于params发送到操作的,因此在设置时有什么方法可以引用该对象?

我尝试使用

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

但可惜它不会让我在那里引用参数。欢迎提出建议!

4

2 回答 2

2

看起来您需要使用可以传递控制器参数的 Proc。这是一个例子

caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
于 2012-11-10T00:05:50.067 回答
0

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

如果您想基于实例进行缓存,我建议您执行Conditional Gets

于 2012-03-01T17:53:07.303 回答