我有一个问题表:标题 每个问题都有答案,在另一个表中:text,question_id 每个答案都有投票,在另一个表中:answer_id
我可以要求总票数
question.votes.count
我已经看过如何将投票数据库分组 http://guides.rubyonrails.org/active_record_querying.html#group
Vote.group("answer_id")
但我想通过投票来命令我的问题。这是通过另一个表的分组从表中排序数组。这可能吗?
q=Question.last
q.answers.order_by_vote #How to do this?
我认为我的答案可能是在答案模型上做一个范围,该范围使得对属于该问题的投票子集进行分组。我是对的吗?
谢谢。
答案 0 :(得分:1)
首先,当你说DB(数据库)时,我认为你的意思是表。表格数据库中的结构,用于保存特定模型的数据(例如,问题,投票和答案。在您的情况下,您有三个表格。
其次,调用attr_accessible:answer_id不会使索引可以搜索属性。无论您是否声明它都可访问,它都可以通过此属性进行搜索。除非您将其指定为数据库中的索引,否则它不是索引。 attr_accessible表示可以使用质量赋值设置属性,例如,当您调用update_attributes时。
最后,如果您想按answer_id分组并按投票数排序,您可以使用以下查询进行分组:
Vote.select('count(id) as votes, answer_id').group('answer_id').order('votes DESC')
如果您想按照分组的其他价值订购,则必须将其添加到您的论坛。这可确保您不会获得第二个值的任意结果。例如:
Vote.group('answer_id').group('column_1').order('column_1 DESC')
答案 1 :(得分:1)
我只想通过投票计数找到一种方法来组织我的链接,使用链接视图中的排序方法:
<% @user.links.sort { |a, b| b.votes.sum(:score) <=> a.votes.sum(:score) }.each do |link| %>
votes.sum(:score)从投票表中获取特定链接的投票数。
希望有所帮助。