由外国专栏组成

时间:2013-04-27 21:10:17

标签: ruby-on-rails ruby

我有一个属于类别模型的产品型号。我希望根据搜索查询按类别对结果进行分组:

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

1 个答案:

答案 0 :(得分:2)

添加

 .order("categories.name, products.name") 
在group_by之前

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