请尝试以下方法:
@resources = Resouce.select("resources.*, COUNT(votes.id) vote_count") .joins(:votes) .where(language_id: "ruby") .group("resources.id") .order("vote_count DESC")@resources.each { |r| puts "#{r.whatever} #{r.vote_count}" }要包含0票的资源,请使用外部联接。如果下面的示例不起作用,则必须更改joins语句以跨正确的关系进行联接。
@resources = Resource.select("resources.*, COUNT(votes.id) vote_count") .joins("LEFT OUTER JOIN votes ON votes.votable_id = resources.id AND votes.votable_type = 'Resource'") .where(language_id: "ruby") .group("resources.id") .order("vote_count DESC")


