2012-05-06 3 views
0

, 나는레일즈는 belongs_to 사용자이지만 다형성 has_many 모델입니까? 새로운 레일 응용 프로그램에서

plan 표는 내가 생각 해요 뭔가 .. 관계

Trip -> 1-to-1 -> Plan 
Plan -> n-to-n -> Places 
Plan -> n-to-n -> Activities 

뿐만 아니라 당연히 부회장 반대 관계의 종류를 구축해야합니다. 추가 테이블없이 직접 Trip -> Places 및 관계를 가질 수 있는지 여부.

만약 그렇다면, 미래에 Plan 모델과 n-to-n 관계를 가질 수있는 다른 모델이있을 수 있다는 것을 명심하면서 이러한 종류의 관계를 처리하는 데는 무엇이 가능하고 효율적인 방법 일 수 있습니다.

업데이트 -이 질문과 답변을 찾았습니다. 내가

ActiveRecord, has_many :through, and Polymorphic Associations

을 나처럼 사람이 같은 일을 찾고 도움이 될 수 있음 감사합니다

답변

3

것이 가능하지만, 복잡하고 지저분한, 그래서 내가하지 않을 것입니다. 당신은

레일 belong_to 협회의 :through 옵션을 제공하지 않습니다

등을 쉽고 효율적으로 여행을위한 장소와 활동에 액세스 할 수 has_many ..., :through => :plan 연결을 정의 할 수 있습니다,하지만 당신은 그 액세스하기 위해 편리한 메소드를 정의 할 수 있습니다, 당신은을 조회 할 수 있습니다 찾는 동안 :include 옵션을 사용하면 효율적으로 관련 레코드를 찾을 수 있습니다.

+0

그러나 has_many : through => : 계획에는 plan_id 및 activity_id가 계획 테이블에 필요하지 않습니까? 그게 문제가되지 않니? 계획 테이블에 일반 x_id & x_type 열을 넣은 다음 has_many : through => : plan 연관을 설정할 수 있는지 궁금합니다. 이것이 가능한가? – hashpipe

+0

@hashpipe ActiveRecord는': through' => 옵션을 사용하여 연관시킬 모델을 검사하여 대상 모델과의 관계를 결정합니다. 방금 레일스 3.2.3에서 확인해 보았습니다. 나는': bbbs'에 속한'Aaa' 모델을 만들었습니다.'bbb' 모델은': cccs'를 많이 가지고있는'Bbb' 모델로,'Aaa'를 가지고 있고': cbs'에서': bbb '. 그런 다음에 "Aaa.first.cccs"를 실행할 수 있고 SQL은 SELECT "cccs"입니다. * FROM "cccs"INNER JOIN "bbbs_cccs"ON "cccs". "id"= "bbbs_cccs". "ccc_id" INNER JOIN "bbbs"ON "bbbs_cccs". "bbb_id"= "bbbs". "id"어디 "bbbs". "id"= 1' –

관련 문제