2016-11-03 62 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 %>