문제

다음 두 가지 모델이 있습니다

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#이됩니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top