2013-06-02 116 views
0

在我的应用程序中,我有一个has_many评论的产品模型。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> 

这究竟是为什么?

+0

请问如果你把它转换成数组第一工作? 'all.sort!'? –

回答

2

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

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

如果你不介意做排序的应用程序,你应该能够做到这一点:

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