가 나는 등 이메일 주소, 성과 이름, 전화 번호와 같은 기본 사용자 정보를 저장하고 싶은 내 앱에서 User
모델이레일 : 관련 모델을 통해 한 모델의 여러 "유형"?
나는 또한에있는 사용자의 많은 다른 유형이 내 판매 대리인, 고객, 손님 등을 포함하는 시스템을 말합니다. 모든 0120-모델을 기본으로 사용하여 모든 필드를 모두 포함 할 필요가 없습니다. 하나 개의 모델에 관련된 역할 및 필요 (중복 데이터베이스 필드 줄이는뿐만 아니라, 다른 한 종류의 하나의 사용자를 변경하는 쉬운 이동성을 제공하는) 위임 할 수 있습니다. 최대 새로운 사용자가 로그인, 나는 (새 사용자가 자동으로 "클라이언트"의 역할을 할당 할 것을 할 때
또한User
-- first name
-- last name
-- email
--> is a "client", so
---- client field 1
---- client field 2
---- client field 3
User
-- first name
-- last name
-- email
--> is a "sales agent", so
---- sales agent field 1
---- sales agent field 2
---- sales agent field 3
and so on...
, 난 :
그래서, 내가 원하는 것은 이것이다 권한이 아니라 데이터베이스 필드에 대해 이야기하고 있지만, 결국이 논리를 내 사용자 권한에도 포함시키기를 바랍니다). wizardly으로 구축하려고하는 다중 단계 가입 마법사가 있습니다. 첫 번째 단계는 간단합니다. 기본 모델 User
(예 : first_name
및 email
)에 포함 된 필드를 호출하기 만하므로 두 번째 단계는 관련 모델에서 필드를 호출해야하므로 까다 롭습니다 (예 : per 내 위의 예 - 필드 client_field_1
또는 client_field_2
와 모델 client
, 그 필드) User
의 일부인 것처럼.
의미가 있습니까? 그것이 명확하지 않다는 것을 알려주고, 다른 방식으로 설명하려고 노력할 것입니다.
아무도 도와 줄 수 있습니까? 어떻게하면 좋을까요? 여기에 두 가지 합리적인 접근 방식을 가지고있는 것처럼
STI가 내가 찾고있는 것 같아요. 나는 그것과 함께 실험하고 그것이 맞는지 보겠다. 설명 : 비록 후자의 방법이 "여러 역할을 허용하는 이점"을 가지고 있다고 말할 때 ... 여기서 정확히 무엇을 의미합니까? 'Class Agent
neezer
추가 조사에서 다형성 협회 (Polymorphic Association)가 저에게 더 적합 할 것으로 보입니다. 이 기사를보십시오 : http://www.andygoh.net/2008/06/19/ruby-on-rails-polymorphic-association/ 아직도 실제로 이러한 연관성을 사용하여 주위에 머리를 감싸는 데 문제가 있습니다 ... 불행히도, Ryan Bate 's 주제에 대한 스크린 캐스트는 내가 성취하고자하는 목표와 거의 정반대입니다 (다른 모델에 속하는 모델을 가지고 있지만 다른 모델이 많은 모델을 원합니다) ...? – neezer
여러 역할 주석의 의미는 단일 사용자가 여러 역할을 가질 수있는 반면 STI는 사용자가 단일 역할을 맡는 것입니다. 다형성 연결은 상황에 따라 적절할 수 있지만 외래 키 제약 조건을 적용하는 것이 불가능하고 항상 조인 키가 필요하기 때문에 데이터베이스 디자인의 경계에 남겨 두는 것이 가장 좋습니다. 중핵의 부분은 성가신 일 수있다. 유형 정보가 DB가 아닌 ORM에만 관련되기 때문에 STI는 "데이터베이스 친화적"입니다. – tadman