我的問題是類似this但一個沒有得到正確的答案,所以我想問一下我自己...的Rails 3:通過關聯的模型分組排序
我提交和票。每個投稿都有許多投票通過通常的has_many
和belongs_to
協會。
我需要排序投票數得票數他們有。投票表有每個投票的單獨條目,每個記錄都有一個submission_id
,所以我不能只在相關模型中按單列進行排序,這就是我希望得到您的幫助的地方。
我的問題是類似this但一個沒有得到正確的答案,所以我想問一下我自己...的Rails 3:通過關聯的模型分組排序
我提交和票。每個投稿都有許多投票通過通常的has_many
和belongs_to
協會。
我需要排序投票數得票數他們有。投票表有每個投票的單獨條目,每個記錄都有一個submission_id
,所以我不能只在相關模型中按單列進行排序,這就是我希望得到您的幫助的地方。
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')
使用'.all'是災難的祕訣,因爲它加載了表中的每一條記錄,可能是一個非常非常大的數字。至少你應該考慮範圍。更好的是,編寫一個只提取你需要的值的查詢。 – tadman 2011-04-08 19:45:57