スイーパーに次のメソッドがあります。
def expire_topic_articles_cache_for topic_id キー = fragment_cache_key :controller => :記事、:action => :index、:topic_id => topic_id Rails.logger.debug "トピック #{topic_id} の記事リスト キャッシュを期限切れにする" Rails.logger.debug " キー #{key} を使用" # フラグメントが複数のページをカバーしているため、RegExp を使用 expire_fragment %r{#{key}} 終わり
問題は、fragment_cache_key の呼び出しにあります。1 つのコード パスでは正しいキーを返しますが、別のコード パスでは nil を返します。どちらも同じ topic_id で呼び出され、両方とも同じコントローラーによってトリガーされますが、異なる観測モデルからトリガーされます。
これは私には意味がありません。fragment_cache_key が同じ入力に対して同じ結果を返すことを期待しています。同じキャッシュ構成が使用されている場合、副作用はありません (両方のコード パスで同じです)。