我的问题类似于this,但是那个问题没有得到正确答案,所以我想问自己......
我有提交和投票。每个提交都通过通常的has_many
和belongs_to
关联进行了多次投票。
我需要按投票数 对提交内容进行排序。投票表每个投票都有一个单独的条目,每个记录都有一个submission_id
,所以我不能只按相关模型中的一个列进行排序,这就是我希望得到你帮助的地方。 / p>
答案 0 :(得分:1)
Vote.all.group_by {| v | v.submission_id} .sort_by {| v | V [1] .size}
同样,又快又脏:
Vote.all.group_by {| v | v.submission_id} .sort_by {| v | V [1] .size} .reverse
这可能不是你想要在制作中这样做的方式。您可以在提交表中设置一个计数器缓存(假设在投票表中每个记录投1票):
现在您可以在提交表中按votes_count排序:
Submission.order('votes_count DESC')
答案 1 :(得分:1)
使用Rails counter_cache
功能。查看更多here。