2

이 연결을 설정하는 올바른 방법을 알아내는 데 문제가 있습니다.has_and_belongs_to_many 또는 다형성 has_many : through?

나는 음악가, 밴드 및 관리자의 3 가지 모델이 있습니다. 그들 각각은 그들과 관련된 특정 "수준"(스트레스, 행복 등)을 가질 수 있습니다.

하지만 제대로 내가 has_many 어떤 종류의가 필요하십니까 다른 3

내 레벨 모델을 연결하는 방법을 잘 모르겠어요 : 그 다형성의를 통해? 그리고 어떻게 지구상에서 그것을 설정합니까? 필요한 다른 유형의 연관이 있습니까? 이것은 당신이 모델의 특정 클래스에 할당 할 수있는 속성을 정의하고있는 경우라면

enter image description here

+0

분명히 말하면, 음악가의 사례 또는 모든 뮤지션과 관련된 수준입니까? – bdon

답변

0

는, 당신은 아마 더 전통적인 접근 방식을 사용하고 싶습니다. kind 대신 record_type과 같은 것을 사용하고 그 대신 범위를 작성하십시오.

그런 식으로 가져 오는 것은 엔티티와이 열 사이의 관계가 아니라 액세서 방법을 만드는 것입니다. 이런 식으로 뭔가 : 대신 다른 모델의 인스턴스의 클래스와 모델을 연결에 대한 규칙이

scope :for_record_type, lambda { |record_type| 
    where(:record_type => record_type.to_s) 
} 

없습니다 :

def levels 
    Level.for_record_type(self.class) 
end 

for_record_type은 범위이다. 당신은 당신의 레벨 테이블에 leveled_typeleveled_id를 추가해야합니다

class Level < ActiveRecord::Base 
    belongs_to :leveled, :polymorphic => true # maybe there's a better word than "leveled" 
end 

class Musician < ActiveRecord::Base 
    has_many :levels, :as => :leveled 
end 

:

0

그래,이 다형성 연관 될 것이다.