1

カテゴリ モデルに属する製品モデルがあります。検索クエリに基づいてカテゴリ別にグループ化された結果を取得したい:

Games # Category
  Mario Gallaxy # product ...
  Paper Mario
  Mario Bros
DVDs
  Anamaniacs
  Buggs Bunny

カテゴリを名前で並べ替えてから、製品を名前で並べ替える必要があります。これは可能ですか?私はこれを書きましたが、名前でグループ化し、またはオブジェクトの配列を返すだけで、メソッドを呼び出すことはできません:

# product.rb
  def self.search(query)
    if query.present?
      includes(:category).where("products.name @@ :q", q: query).group_by(&:name)
    else
      scoped
    end
  end

私は Rails 4 を使用しています。あいまいさもあります: Category.nameand Product.name.

4

1 に答える 1

2

追加

 .order("categories.name, products.name") 

group_by の前。

group_by は Enumerable に作用し、ハッシュを返すため、チェーンのその部分にヒットし、ActiveRecord::Relation ではなくなったときにクエリが実行されます。

于 2013-04-27T21:38:27.893 に答える