这是我正在尝试做的事情
class Question
has_many :votes
end
class Vote
belongs_to :question
end
我想通过他们拥有的票数来查找所有问题。我想在Arel(在Rails 3中)表达这一点,而不使用任何计数器缓存。
有没有办法做到这一点?
感谢。
答案 0 :(得分:4)
尝试下一个:
Question.joins(:votes).select("questions.id, *other question coulmns*, count(votes.id) as vote_count").order("vote_count DESC").group("questions.id")
答案 1 :(得分:1)
试试这个:
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")
解决方案与数据库无关。确保在question_id
表的votes
列中添加索引(即使您不使用此解决方案,也应添加索引)。