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>