2013-04-27 3 views
1

나는 카테고리 모델에 속한 제품 모델을 가지고 있습니다. 내가 다시 검색 쿼리를 기반으로 범주별로 그룹화 결과를 얻으려면 :외국 칼럼으로 그룹화

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

내가 이름으로 카테고리를 분류 한 다음 이름으로 제품을 정렬 할 필요가있다. 이것이 가능한가? 나는이 쓴, 그러나 그것은 단지 이름으로 그룹화, 나는 메소드 호출 할 수의 배열 또는 객체 반환 것 : 애매함도 있습니다 내가 레일 4를 사용하고

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

을 : Category.nameProduct.name.

+0

"어떻게하면 메소드를 호출 할 수 없다"는 의미입니까? –

+0

"배열 클래스에 대해 정의되지 않은 메소드 이름"이 표시됩니다 ... – dee

답변

2

GROUP_BY 전에

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

를 추가합니다.

group_by는 Enumerable에서 작동하고 해시를 반환하므로 체인의 해당 부분에 도달하여 더 이상 ActiveRecord :: Relation이 아니어야 쿼리가 실행됩니다.