我在基于投票列排序我的表时遇到问题,投票是一个多值属性,所以我使用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并且仍然对某些事情感到困惑,我们非常感谢您的帮助。
答案 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')