2012-09-11 5 views
1

전자 메일, 전화, 이름 등과 같은 법적 연락처에 대한 기본 연락처 정보가있는 "연락처"라는 레일 모델이 있습니다. 다음과 같이 보입니다.레일 모델의 하위 클래스에 추가 속성을 추가하기위한 모델

class Contact < ActiveRecord::Base 

    attr_accessible :name, :phone, :email, :city, :state, :zip_code 

접촉 유형에 따라 서로 다른 속성을 추가해야합니다.

나는 이런 식으로 뭔가에서 올 것 행동 싶습니다

class DisabilityContact < Contact 
    attr_accessible :employed, :medical_condition, :represented 

을하지만 DisabilityContact 그 추가 필드를 포함하지 않는 "연락처"테이블을 사용하기 때문에이 불가능합니다.

@contact = DisabilityContact.create 
@contact.employed = true 

또는

@contact = DisabilityContact.create 
@contact.special_attributes.employed = true 

추신 : 나는 같은 일을하고 이러한 속성을 설정 할 수 있도록 내 모델과 관계를 구성하는 방법에 대한 조언을하고 싶습니다 나는 어떤 데이터도 직렬화하지 않는 것을 선호한다.

감사합니다.

답변

0

연락처 테이블에 필드를 추가하고 필요할 때만 필드를 사용할 수 있습니다. 또는 두 개 이상의 테이블을 가질 수 있습니다.

Single Table Inheritance in Rails 도움을 받으실 수 있습니다.

+0

이 경우 연락처 테이블에 약 50 개의 추가 열을 추가해야하는데 대부분은 각 레코드에 대해 비어있게됩니다. 데이터베이스가 커짐에 따라 예측 가능한 문제가 발생합니까? –

+0

동일한 문제가 있습니다. – Shyamkkhadka

+0

@shyamkkhadka 해답을 찾았 으면 contact_data라는 열을 만들어서 거기에 모든 직렬화 된 데이터를 저장하십시오. –