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.nameProduct.name.

4

1 回答 1

2

添加

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

在 group_by 之前。

group_by 作用于 Enumerable 并返回一个散列,因此当查询到达链的该部分并且不再是 ActiveRecord::Relation 时,就会运行您的查询。

于 2013-04-27T21:38:27.893 回答