0

私のアプリには、has_many Reviews という Product モデルがあります。

私のコントローラーでは、製品の配列をレビューの数で並べ替えたいと思います。

コントローラ

@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>

なぜこうなった?

4

1 に答える 1

2

Product < ActiveRecord::Baseクラスをソートしようとしているからです。それは意味がありません。

AR リレーションを使用してデータベースで関連付けを並べ替えることができるかもしれませんが、その方法はわかりません。

アプリケーションで並べ替えを実行してもかまわない場合は、次のようにすることができます。

def self.sort_by_reviews_count
  self.all.sort! { |x,y| x.reviews.count <=> y.reviews.count }
end
于 2013-06-02T22:42:56.070 に答える