ACTS_AS_TREE- 일대일 : 학부모 페이지에서 어린이와 관련된 레코드를 보여줍니다.

StackOverflow https://stackoverflow.com/questions/1688830

문제

나는 비교적 간단한 일대일 관계를 가지고 있으며 ACTS_AS_TREE를 사용하여 시야에서 구성 할 수 있습니다. 이렇게 보인다 :

뿌리

  |_Product 1
  |_Product 2
  |_Category 1.1

        |_Product 3
        |_Product 4
        |_Category 1.1.1

               |_Product 5

내가 설정하는 방식은 카테고리의 '쇼'동작에 제품을 나열하는 것입니다. 그러나 나는 보여줄 방법을 알아낼 수 없다 : 카테고리 1의 '쇼', 카테고리 1.1의 제품 3-5 등의 '쇼'의 제품 1-5 ...

누구든지 힌트가 있습니까?

감사! 발

도움이 되었습니까?

해결책

최근을 살펴볼 수도 있습니다 가계 GEM은 모든 후손을 하나의 SQL 쿼리로 가져와야 할 때 고성능을 위해 설계되었습니다.

다른 팁

당신이 savide_nested_set을 사용하고 있다면 (추천, 나는 do) 이것을 할 수 있습니다.

제품에 속하는 경우 _to 카테고리에 속하는 경우 :

class Category < ActiveRecord::Base
    def products_in_tree
        Product.all(:joins => :category, :conditions => ['categories.lft >= ? and categories.rgt <= ?', left, right])
    end
end

제품 HAS_AND_BELONGS_TO_MANY 카테고리 (또는 HAS_MANY : THER) 인 경우 : 조인을 변경하십시오 : 카테고리.

허용 가능한 성능으로 이것을 해결하려면 중첩 세트를 사용해야합니다 (즉, 목록을 컴파일하려면 다수의 별도 데이터베이스 조회를 피하십시오).

레일은 _ nested_set 내장으로 _ AS _ ACT를 가지고있었습니다. 작동 방식에 대한 설명 여전히 매우 좋고 매우 유효합니다. 오늘 당신은 이것을 a로 사용해야합니다 플러그인.

그러나 기본 레일 플러그인은 그다지 좋지 않으므로 다른 여러 플러그인이 만들어졌습니다. 나는 당신이 사용하는 것이 좋습니다 멋진 중첩 세트, 나는 만족스러운 결과로 나 자신을 사용했습니다.

중첩 된 세트는 이해하기 어려울 수 있지만 첫 번째 링크와 다른 readme가 설명하길 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top