如何从控制器中使用cache_if方法,而不是查看?

时间:2016-01-08 23:24:24

标签: ruby-on-rails ruby-on-rails-4

在内部视图中,我可以写:

= cache_if Rails.env.production?, my_cache_key do
  ...

但是如何从控制器中使用cache_if方法,而不是查看?

1 个答案:

答案 0 :(得分:0)

cache_if是一个视图助手。它被设计为在视图上下文中混合,而不是在控制器中。

您无法在控制器中使用它。您可以尝试将助手混合到控制器中,但它不是为此而设计的,因此您不应采用该方法。

相反,您可以使用Rails.cache来访问缓存存储。如果您想要克隆cache_if实现,那么您可以编写自己的实现:

def cache_if(condition, name = {}, options = nil, &block)
  if condition
    Rails.cache.fetch(name, options, &block)
  else
    yield
  end
end