来自Sweeper的控制器操作到期不起作用

时间:2014-03-17 01:43:44

标签: ruby-on-rails ruby spree sweeper

让控制器处理大型XML提要的呈现

module Spree
  class FeedsController < Spree::StoreController
    ...

    caches_action :products_out
    cache_sweeper FeedSweeper

    # XML feed in format of `xxxxxxx.com'
    def products_out
      @products = Product.all
      respond_to do |format|
        format.xml
      end
    end
end

贝娄是相应的清扫工的子类:

module Spree
  class FeedSweeper< ActionController::Caching::Sweeper
    observe Product

    def after_update(product)
      # cache_configured? is nil, @controller is nil here, why ?
      expire_action(:controller => :feeds,
                    :action     => :products_out,
                    :format     => :xml)
    end
end
Spree::FeedSweeper更新时,

高于Spree::Product 被调用,但似乎expire_action无声地死亡,缓存无法失效。

有人可以解释这个问题吗?甚至更好地建议一些解决方案?

感谢。

1 个答案:

答案 0 :(得分:0)

您使用的是哪个Rails版本?在Rails 3.2.14之后,expire_action似乎是deprecated

也许您可以尝试查找密钥,然后使用Rails.cache.delete(key)直接清除密钥。