2013-06-06 7 views
0

나는 인터넷 검색을하고 포럼을 검색했지만 내 시나리오에 맞는 대답을 찾지 못하는 것 같습니다. Rails 3의 다형성 연관

은의 다음과 같은 모델을 가지고 있다고 가정 해 봅시다 :
class TextProblem < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
    ... 
end 

class MultipleChoice < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
    ... 
end 

class WordMatch < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
    ... 
end 

지금 내가 문제라는 또 다른 모델을 가지고있다.

class Question < ActiveRecord::Base 
    has_one :askable, :foreign_key => 'question_id' .... 
end 

을하고 그것을 제공 : 그것은 그것이 그 question_id라는 이름의 필드가 내가 이런 일을하고 싶지 있습니다 .. askables 중 하나에 외래 키 질문의 유형을 나타내는 필드라는 이름의 question_type_id있다 올바른 askable하지만 나는 협회를 작성하는 방법을 모르겠습니다. 나는이 권리를 보느냐, 아니면 다른 방법으로 성취하려고 노력해야 하는가?

도움을 주시면 감사하겠습니다.

답변

0

당신은 당신의 연결 라운드

class Question < ActiveRecord::Base 
    belongs_to :askable, :polymorphic => true 
end 

class TextProblem < ActiveRecord::Base 
    has_many :questions, :as => :askable 
    ... 
end 

class MultipleChoice < ActiveRecord::Base 
    has_many :questions, :as => :askable 
    ... 
end 

class WordMatch < ActiveRecord::Base 
has_many :questions, :as => :askable 
    ... 
end 

this를 참조하십시오 다른 방법이 있어야합니다.

+0

감사합니다. Vishma, 지금 작동 중입니다. 올바른 규칙 (_id 및 _type)을 사용하려면 질문 테이블에서 기본 스키마를 수정해야했습니다. 그 자리에서 그리고 협회들이 바뀌면서 나는 예상 된 결과를 얻고 있습니다. – Kevin