두 개의 단일 테이블 상속 모델 간의 관계
-
19-09-2019 - |
문제
다음 두 가지 모델이 있습니다
class ContactField < ActiveRecord::Base
end
class Address < ContactField
end
class Phone < ContactField
end
그리고
class Contact < ActiveRecord::Base
end
class Company < Contact
end
class Person < Contact
end
나는 회사 나 사람이든, 많은 연락처 (주소와 전화)를 갖기 위해 하나의 연락처를 원합니다 ... 그래서 어디에 넣어야합니까? 많이있다 그리고 속한다? 감사
해결책
당신은 이미 평범한 영어로 그것을 말했습니다 :-)
나는 회사 나 사람이든, 많은 접촉 필드 (주소와 전화)를 갖기를 원합니다 ... 그래서 그것들을 어디에 두어야 하는가? 감사
class Contact < ActiveRecord::Base has_many :contact_fields end class ContactField < ActiveRecord::Base belongs_to :contact end
이 관계는 주소와 전화 모두에 의해 상속됩니다.
다른 팁
당신이 관계에 속하는 것을 묘사하는 것 같습니다. 협회는 상위 클래스에서 정의되어야하므로 서브 클래스에 의해 상속 될 수 있습니다.
class ContactField < ActiveRecord::Base
belongs_to :contact
belongs_to :company, :foreign_key => :contact_id
belongs_to :person, :foreign_key => :contact_id
end
class Contact < ActiveRecord::Base
has_many :contact_fields
has_many :addresses
has_many :phones
end
그러나 @contact.contact_fields는 ContactField 레코드를 반환합니다. 하위 클래스에 정의 된 메소드가 필요한 경우 언제든지 메소드를 사용할 수 있습니다. 그 주위에는 몇 가지 방법이 있습니다. 내가했던 것처럼 추가 연관성을 추가합니다. 또는 사용 ActivereCord :: Base#이됩니다
제휴하지 않습니다 StackOverflow