counter_cacheに条件を付けたい、あるいはcounter_cultureを利用しているが不満がある、という方向けの投稿です。 背景 ActiveRecordには、公式のチュートリアルActive Record Associations — Ruby on Rails Guidesにもあるように、counter cacheと呼ばれる機能が用意されています。 例えば上記のように投稿とタグの関係性を表すような中間テーブル用のモデルTaggingにcounter_cacheを設定しておくと、taggingsテーブルにレコードが作成/削除されたときに tags.taggings_count が自動的に更新されるようになります。便利ですね。 問題 他人に見せたくない投稿を表現するためにprivateモードというものが存在したとしましょう。このとき、privateモードの投稿は、tag.tag