親テーブルのすべての行を効率的に取得し、各行にある子の数をカウントする「レールの方法」とは何ですか?
counter_cache
いくつかの時間条件に基づいてこれらのカウントを実行したいので、使用したくありません。
決まり文句のブログの例: 記事の表。各記事には 0 個以上のコメントがあります。
過去 1 時間、1 日、1 週間に各記事に寄せられたコメントの数を取得できるようにしたいと考えています。
ただし、理想的には、リストを反復処理して記事ごとに個別の SQL 呼び出しを行いたくないし:include
、すべてのデータをプリフェッチしてアプリ サーバーで処理するために使用したくありません。
1 つの SQL ステートメントを実行して、すべての情報を含む 1 つの結果セットを取得したいと考えています。
私は完全な SQL をハードコーディングできることを知っています。おそらく a を使用して、 、、およびパラメータ.find
を設定することもできます...しかし、「より良い」方法があるかどうか疑問に思っています...別名「Rails Way」:joins
:group
:conditions