如何通过连接模型的值对activerecords查询进行排序?

时间:2011-11-27 04:19:49

标签: ruby-on-rails

我有一个模型问题。问题通过联接模型进行评论和投票。在我的问题#index视图中,我希望能够按照评论和投票的数量对查询结果进行排序:

@issues = Issue.limit(10).find(:all, :order => "COMMENT_COUNT DESC")

但是,如果我尝试这样的话:

@issues = Issue.limit(10).find(:all, :order => "issue.comments.count DESC")

它不起作用。我可以在问题模型中添加评论和投票计数......但我不确定最好的方法是什么,我甚至不认为这是最好的方法。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

这比这更多一点。这需要更多的sql。您必须在查询中包含针对您的问题的注释表。然后,您必须按问题ID对结果进行分组,以获得每期的评论数。

这样的事情应该有效:

@issues = Issue.find(:all, :order => "count(comments.id) DESC"), :joins =>"inner join comments on comments.issue_id = issues.id", :group =>"issues.id",:limit=>"10" )