2011-03-26 3 views
3

프로필이 서로 다른 두 가지 사용자 카테고리가 있습니다. 하나는 음악가 용이고 다른 하나는 수신기 용입니다. 각각의 프로필에는 겹치는 속성과 속성이 있습니다. 서로 다른 프로필에 대해 별도의 모델을 사용해야합니까? 아니면 사용자 테이블에 사용자가 아티스트인지 아닌지에 대한 이진 데이터 열이 있어야합니까? 어떻게 구성 될까요?두 가지 프로필 유형

답변

3

Single Table Inheritance을 사용할 수 있습니다. Single Table Inheritance은 모델의 하위 클래스를 만들어서 사용할 수 있습니다. Artist 또는 Listener AN,이 거

class Profile < ActiveRecord::Base 
    # Common profile attributes 
end 

class Artist < Profile 
    # Things specific to an artist profile 
end 

class Listener < Profile 
    # Things specific to a listener profile 
end 

만들 때 : 서브 클래스, 모델을 이제

$ rails g model Profile type:string 

, profile.rb에서 :

type:string 열이있는 Profile 모델 (The name can be overriden)를 생성 프로파일의 유형과 함께 profiles 테이블에 저장하십시오.

예를 들어 Artist.create을 입력하면 이라는 profiles 테이블에 저장됩니다.

레코드를 가져 오면 적절한 모델로 반환됩니다 (Artist, Listener 또는 일반 Profile).

이 기술에 대한 자세한 내용은 this question을 참조하십시오.

This blog post 좋은 일을 잘 설명합니다.

+0

아티스트 및 수신기 클래스가 모두 프로필 모델에 포함됩니까? Single Table Inheritance에 대해 깊이있는 소스를 가르쳐 주시겠습니까? –

+0

도 콘솔에서 어떻게 생성합니까? –

+0

@Justin, 업데이트 된 답변. 이 기술에 대한 문서가 거의없는 것은 실망 스럽습니다. –

0

하나 개의 기본은 (예술 또는 수신기) 형식을 저장할 필드를 사용하여, 공통의 속성과 다른 두 사람 각각

의 특정 속성을 가진 그리고 프로필에 (예술, 리스너) 모델을 포함하는 프로파일이라고

그냥 내 의견입니다.