2013-07-02 1 views
1

has_many 연관이있는 Items 테이블과 관련 ItemPrices 테이블 설정이 있습니다. ItemPrices 테이블에는 tier_id 필드도 있습니다. has_many 연관이있는 Ancestry gem

그래서 구조는 기본적으로

Item      ItemPrices 
---------     ------------ 
id      id 
ancestry     item_id 
title      tier_id 
          price 

항목 테이블 has_ancestry과 같이 설정되어 있고 잘 작동한다.

항목 계층 구조가 특정 계층에있는 항목의 계층 구조를 잡아 내려면 어떻게해야합니까?

+0

주어진 tier_id 범위에있는 항목의 목록을 찾으려고하십니까? –

+0

@ DanBradbury 특정 계층의 itemprice를 가진 주어진 부모에 대한 항목 목록을 찾으려고합니다. 그래서 저는 아침 식사 -> 달걀 -> 달걀 튀김과 아침 -> 달걀 -> 삶은 달걀을 가지고 있습니다. 프라이드 계란의 가격은 1 단계 및 2 단계입니다. 부패 된 달걀의 가격은 1 단계에 불과합니다. 따라서 1 단계에 해당하는 품목 목록을 보면 조식 -> 달걀 -> 삶은 달걀과 프라이드 달걀이 보일 것입니다. . 2 단계에 해당하는 항목 목록을 보면 아침 -> 달걀 -> 튀김 달걀 만 볼 수 있습니다. 따라서 tier_id의 목록을 필터링하려고 시도했습니다. – robzolkos

답변

1

는이 같은 어떻게 든 수 있습니다

항목 모델 :

has_ancestry 
has_many :item_prices 

def self.tree_with_certain_tier(tier_id) 
    scoped.includes(:item_prices).collect{|item| item.item_prices.with_certain_tier(tier_id)}.arrange 
end 

ItemPrice 모델 :

belongs_to :item 
scope :with_certain_tier, lambda {|tier_id| where(:tier_id=>tier_id) } 

지금 당신은 당신이 단지 필요 잡아 수

Item.tree_with_certain_tier(pass_certain_tier_id_here) 

나는하지 않았다. 이것을 확인하십시오. 그러나 정확한 것이어야합니다. (또는 최소한 올바른 방향으로 당신을 가르쳐주십시오)

어떤 것이 명확하지 않거나 오류가 발생할 경우 물어보십시오. 우리가 그들을 신속하게 고쳐 줄 것입니다.

+0

범위에서 줄에 오류가 발생했습니다 : item_prices_with_certain_tier, lambda {| tier_id | item_prices.with_certain_tier (tier_id)} 오류가 정의되지 않았습니다. 지역 변수 또는 메소드 'item_prices'for # robzolkos

+0

oopss ... 항목 모델의 범위가 필요하지 않았습니다 ... 내 대답이 변경되었습니다. – okliv