通过对另一个表中的值进行分组来对订单表进

我有一个问题表:标题每个问题都有答案,在另一个表中: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? 

我认为我的答案可能是在答案模型上做一个范围,该范围使得对属于该问题的投票子集进行分组。 我对吗?

谢谢。

首先,当你说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') 

我只想通过投票计数找到一种方法来组织我的链接,使用链接视图中的排序方法:

<% @user.links.sort { |a, b| b.votes.sum(:score) <=> a.votes.sum(:score) }.each do |link| %>

votes.sum(:score)从投票表中获取特定链接的投票数。

希望有所帮助。

Interesting Posts