2011-07-22 1 views
1

投稿モデルにhave_many Commentsがあるとします。私は、最も多くのコメントを持っている人に基づいて、最も人気のあるトップ10の投稿を取得したいと考えています。何十万もの投稿があると仮定すると、これらのトップ10の投稿を取得する最も効率的な方法は何ですか?Rails 3:関連付けをカウントすることでモデルの人気を判断する最速の方法

また、どのようにクエリをキャッシュしますか?

ありがとうございます!

答えて

2

というPostにカウンタキャッシュ列を追加することをおすすめします。この列に索引を追加し、あなたはで最も人気のある記事を選択することができます:カウンターキャッシュ詳細はActiveRecord associations class methodsドキュメントをチェックアウト

# app/models/post.rb 
scope :popular, lambda { order("comments_count DESC").limit(10) } 

+0

素敵な提案、ジェリコ。ありがとうございました! –

関連する問題