2010-07-06 9 views
1

우리는 공급, 대리점, 공급 업체, 우리의 스키마에 역할 같은 모델이있다. 이 엔티티에는 이름, 설명, 영업소 등의 공통 속성이 있지만 대개 서로 다른 has_many : through 연결 (공급 업체에는 많은 stock_keeping_units가 있고 다른 회사는 그렇지 않음)이 다른 분기 스키마가 있기 때문에 접을 필요가 있습니다. 별도의 모델.모델의 다형성 추상화와 레일의 잠재적 인 MI?

우리는 또한 예를 들어, 제휴 행사하는 대리점 이벤트, 조달 이벤트 등

은 어떻게 의 is_a 관계 이러한 추상적를 만들 수 있습니다, 시스템의 이벤트의 다양한 유형이 구매자, 공급 업체 등의 모델을 회사 모델에 추가하고 파트너십 이벤트와 같이 이벤트를 만들 때 회사 1이 회사 유형을 걱정하지 않고 회사 2와 파트너 관계를 맺고 있다고 말하면서 내 양식 부분에서 이와 같이 할 수 있습니다 이벤트 제출을위한 :

<p> 
    <%= f.label "Company 1" %> 
    <%= f.collection_select :partnering_company_id_1, Company.all ,:id, :name, { :default => true} %> 
    </p> 

필요한 경우 스키마에 대한 자세한 내용을 공유하고자합니다. 이것이 가능한가? 나는 최근에 가서 this 블로그 게시물을 통해 MTI를 설명하지만 현재 문제 진술 문에 해당되는지 확실하지 않습니다.

답변

0

단일 테이블 상속을 사용하고 싶습니다. 매우 비슷한 속성을 가진 모델을 가지고있을 때 이것이 최선의 해결책이라고 생각합니다.

예를 들어 Events의 경우 type 열을 가져야하는 테이블이 하나만 있습니다 (events).

이 STI (적어도 내가 그것을 발견하지 않았다)에 대한 좋은 문서가 없지만 this 포스트와 this 하나는 조금 도움이 될 것입니다 ...

+0

을 그들 자신의 has_many : 연결을 통해. 또한이 모델들은 각각 스핑크스를 통해 개별적으로 검색 할 수 있습니다. – papdel

+0

많은 모델을 보유 할 수 있습니다. STI를 사용하는 것은 하나의 테이블 만 가질 수 있다는 것입니다. 그러나 모델이 많은 특성을 공유하지 않는다면 이것이 최선의 해결책은 아닙니다. –

0

나는이 여전히 관련이 있는지 알고하지만 난하지 않습니다 최근 MTI 솔루션을 연구했습니다. 그것은 메가 간단하고 좋은 작품처럼 보인다는 (ED) :

가 그것을 살펴주는 고려가 필요 정확히 : 모델은 공통점이 몇 가지 특성을 공유하고이 있기 때문에 STI에하지 너무 치열을 http://peterhamilton.github.com/citier

관련 문제