我有一个场景,我有一个候选人,一个候选人有很多票。我想按票数从高到低的顺序排列候选人。此查询执行此操作:
Candidate.joins(:votes).
select(['candidates.*', 'SUM(votes.score) as total_score']).group('candidates.id, candidates.candidate_id, candidates.user_id, candidates.status, candidates.card_id, candidates.created_at, candidates.updated_at').
order('candidates.status desc, total_score desc, candidates.created_at asc').where("candidates.riding_id = ? and candidates.status != ?", 124, CandidateStatus::Eligible ).
having('SUM(votes.score) >= 0')
我的问题是我用它来渲染它:
render :json => @candidates.to_json(:include => [:votes])
然后,这会导致对每个候选人进行查询以获得他们的选票。我应该能够在一个查询中做到这一点,但无论我如何更改它,它仍然会分别获取每个候选人的选票。