我有一个属于类别模型的产品型号。我希望根据搜索查询按类别对结果进行分组:
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.name
和Product.name
。
答案 0 :(得分:2)
添加
.order("categories.name, products.name")
在group_by之前。
group_by作用于Enumerable并返回一个哈希,因此当你的查询到达链的那一部分并且不再是ActiveRecord :: Relation时,你的查询就会运行。