Rails找到所有订单,找到0结果预期2

时间:2017-06-08 08:42:31

标签: ruby-on-rails

我在基于投票列排序我的表时遇到问题,投票是一个多值属性,所以我使用count并尝试根据它进行排序。这是代码

@topics = Topic.find(:all,:order=>'@topic.votes.count DESC')

Rails返回错误

ActiveRecord::RecordNotFound in TopicsController#index
Couldn't find all Topics with 'id': (all, {:order=>"@topic.votes.count DESC"}) (found 0 results, but was looking for 2)

刚开始使用rails并且仍然对某些事情感到困惑,我们非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

这是在更高版本的Rails版本中使用的Rails 2语法。

您可以这样做:

Topic.joins(:votes).group('topics.id').order('count(topics.id) DESC')

答案 1 :(得分:1)

  

而不是加入包含是最好和更快的选项

Topic.include(:votes).group('topics.id').order('count(topics.id) DESC')

答案 2 :(得分:0)

感谢ahmed和snehal,我能够找到我正在寻找的答案,这是

Topic.left_outer_joins(:votes).group('topics.id').order('count(topics.id) DESC')