私には候補者がいて、候補者には多くの投票があるというシナリオがあります。候補者を投票数の多い順に並べたいと思います。このクエリは次のことを行います。
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])
これにより、各候補のクエリが投票を取得します。1 つのクエリでこれを実行できるはずですが、どのように変更しても、各候補者の投票は個別に取得されます。