Rails - 如何按关联属性排序

时间:2013-06-02 22:34:51

标签: ruby-on-rails

在我的应用中,我有一个产品型号,其中有很多评论。

在我的控制器中,我只想根据有多少评论来订购产品数组。

控制器

@search = Product.search_attributes(params[:search])
@products = @search.sort_by_reviews_count

产品型号:

def self.sort_by_reviews_count
  self.sort! { |x,y| x.reviews.count <=> y.reviews.count }
end

但是,我收到以下错误:

undefined method `sort!' for #<Class:0x007ff019ebf468>

为什么会这样?

1 个答案:

答案 0 :(得分:2)

因为您正在尝试对Product < ActiveRecord::Base课程进行排序。这没有意义。

您可以使用AR关系对数据库中的关联进行排序,但我不确定如何。

如果你不介意在应用程序中进行排序,你应该能够这样做:

def self.sort_by_reviews_count
  self.all.sort! { |x,y| x.reviews.count <=> y.reviews.count }
end