我使用迁移将一些产品数据输入到表中。当我更新,添加,删除此表中的产品时,我需要使页面和片段缓存失效。我为此创造了一个扫地机。
class ProductSweeper < ActionController::Caching::Sweeper
observe Product
def after_create
expire_cache
end
def after_save
expire_cache
end
def after_update
expire_cache
end
def after_destroy
expire_cache
end
private
def expire_cache
expire_page(:controller => 'ProductsController', :action => 'index')
expire_fragment 'listed_products'
end
end
然后在脚本/控制台中更新产品名称并保存。当我在浏览器中重新加载我的应用程序时,它仍然给我一个缓存命中。
缓存片段命中:views / listed_products(0.2ms)
有人可以告诉我如何使此缓存失效。我不会通过控制器操作添加,更新,删除产品。
感谢, 灰
更多信息:
<div>
<% cache 'listed_products' do %>
<%= render :partial => "/layouts/product", :collection => Product.listed_products %>
<% end %>
</div>
这是部分。
<ul class="vlist">
<li>
<div class="Flt Hday">
<%=h product.name %>
</div>
<div class="Frt Hday">
<%=h product.cal_date.strftime("%b %d, %Y") %>
</div>
</li>
</ul>