によって順序は私は彼らが持っている投票数順すべての質問を検索したいAREL:ここでは、アソシエーション数
class Question
has_many :votes
end
class Vote
belongs_to :question
end
やろうとしているものです。私はカウンタキャッシュを使用せずにArel(Rails 3)でこれを表現したいと思います。
これを実行する方法はありますか?
ありがとうございました。
によって順序は私は彼らが持っている投票数順すべての質問を検索したいAREL:ここでは、アソシエーション数
class Question
has_many :votes
end
class Vote
belongs_to :question
end
やろうとしているものです。私はカウンタキャッシュを使用せずにArel(Rails 3)でこれを表現したいと思います。
これを実行する方法はありますか?
ありがとうございました。
はこれを試してみてください:
Question.select("questions.*, a.vote_count AS vote_count").
joins("LEFT OUTER JOIN (
SELECT b.question_id, COUNT(b.id) AS vote_count
FROM votes b
GROUP BY b.question_id
) a ON a.question_id = questions.id")
ソリューションはDBに依存しないです。 votes
テーブルのquestion_id
列にインデックスを追加してください(このソリューションを使用しない場合でもインデックスを追加する必要があります)。
は、次の方法を試してください。
Question.joins(:votes).select("questions.id, *other question coulmns*, count(votes.id) as vote_count").order("vote_count DESC").group("questions.id")
あなたは 'group(" questions.id ")'を意味しましたか? –
はい、申し訳ありません。単に入力してください。 – bor1s
選択の際に他の質問列* '' 'を簡単に得る方法はありますか?私は '' 'group()' 'でそれが必要になると思います。 –