2016-11-03 98 views
0

有什么方法可以使片段缓存有条件,例如:这将永远缓存:Rails:有条件地绕过片段缓存

<% cache :calculation do %> 
    <%= calc(x) %> 
<% end %> 

但我怎么能让它缓存,例如, x > 5,是这样的:

<% cache :calculation, { if: (x > 5) } do %> 
    <%= calc(x) %> 
<% end %> 

当然,也可能是使用if-then语句完成,提取出来的缓存内容的功能,但这是凌乱。可能它可以通过在这种情况下将ttl设置为零来工作,但是我怀疑它仍然会将该项放入缓存中,这是浪费的空间。

回答

2

你试过cache_if

<% cache_if((x > 5), :calculation) do %> 
    <%= calc(x) %> 
<% end %>