2

3.1 でフラグメント キャッシュを使用しています。Rails アプリで、有効期限が切れていないフラグメントが 1 つあり、その理由がわかりません。時間に基づいて(1時間ごとに)期限切れにしたいフラグメントです。私は Heroku を使用しており、キャッシングに Memcachier アドオンを使用しています。他にキャッシングの問題はないようです。

私のアプリには、User、Community、Activity の 3 つのモデルがあります。Community#index には、1 時間ごとに期限切れにしたいこのコミュニティのユーザーによるアクティビティを示すフラグメントがあります。アクティビティ モデルのメソッドである計算は正常に機能します。フラグメントが 1 時間ごとに期限切れになる (そして更新される) だけです。

私の見解では、私は持っています:

<% cache("activity_#{community.id}", :expires_in => 1.hour) do %>               
    <-- content >      
<% end %>

User モデルにキャッシュの有効期限を追加して、スケジュールされたタスクにすることも試みました。

  def self.expire_activity
    Community.find_each do |community|
      ActionController::Base.new.expire_fragment('activity_#{community.id}')
    end
  end

モデルからキャッシュを期限切れにする方法を決定するために、この質問への回答に従ってみましたが、このコードではエラーが発生します。

NoMethodError: undefine method 'expire_fragment' for #<Class:0x5ffc3e8>

4

1 に答える 1