2

新しい記事が公開されたときに、スイーパーを使用してホームページのインデックスアクションをクリアしようとしています。

ホームページキャッシュは開発環境で正常に機能しており、1分後に期限切れになります。ただし、記事が保存されると、スイーパーアクションはトリガーされません。

class HomeController < ApplicationController
  caches_action :index, :expires_in => 1.minute
  cache_sweeper :article_sweeper
  def index
    @articles = Article.published.limit(5)
  end
end

class ArticleSweeper < ActionController::Caching::Sweeper
  observe Article
  def after_update(article)
    expire_action(:controller => 'home', :action => 'index')
  end
end

どこかで間違っているか、ホームページのキャッシュを期限切れにするために別のアプローチが必要です。

私のアプリはActiveAdminを使用して記事を更新し、Dalli for Memcacheを使用します(Herokuを使用するため)。

4

1 に答える 1

4

解決への 2 つのステップ:

モデルで変更を実行するコントローラーには、上記のように宛先コントローラーではなく、スイーパー参照が必要です。この場合は active_admin なので、これをホーム コントローラーの代わりにadmin/articles.rb ファイル ( source ) に追加しました。

controller do
  cache_sweeper :article_sweeper
end

コントローラ名にはスラッシュが必要です

expire_action(:controller => '/home', :action => 'index')
于 2012-07-24T23:37:55.917 に答える