2013-04-27 98 views
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

+0

你是什麼意思「我不能調用方法」? – 2013-04-27 21:27:08

+0

它說「數組類的未定義的方法名稱」... – dee 2013-04-27 21:30:40

回答

2

的GROUP_BY之前添加

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

group_by對Enumerable起作用並返回一個散列,因此當您的查詢遇到鏈的那部分並且不再是ActiveRecord :: Relation時,將運行該查詢。