如何使用Rails以最大量的相同条目进行排序?

时间:2014-09-21 16:49:44

标签: sql ruby-on-rails

我有survey用户可以发帖answers,因为每个问题的答案都会以foreign key的形式保存在数据库中,我想知道哪个答案得到了评分最高。

所以,如果数据库看起来像这样:

answer_id
1
1
2

如何选择id 1 2的答案被选择的次数多于ID为@question = AnswerContainer.where(user_id: params[:user_id])的答案?

修改

到目前为止,我已经这样做了: {{1}}列出了给定用户投票的内容,但显然,这不是我需要的内容。

3 个答案:

答案 0 :(得分:3)

你可以尝试:

YourModel.group(:answer_id).count

为您的示例返回类似:{1 => 2, 2 => 1}

的内容

答案 1 :(得分:1)

您可以按分组进行分组

Select answer_id, count(*) as maxsel
From poll
Group by answer_id
Order by maxsel desc

答案 2 :(得分:1)

正如rails文档(http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html)中所述,当您使用带计数的组时,活动记录"返回一个哈希,其键代表聚合列,值是相应的数量"

  

Person.group(:市).Count之间      #=> {'罗马' => 5,'巴黎' => 3}