2012-03-12 4 views
1

사용자 모델에 대한 설치 역할, 지금은 users 테이블에 대한 역할 문자열 열만 있습니다. 값은 관리자, 영업 사원, 강사 또는 학생이 될 수 있습니다.Rails 3. 다른 역할을 수행하도록 사용자 모델을 설정하는 방법은 무엇입니까?

이제 Instructor가 가르쳐야하는 ScheduledSession 모델이 있습니다. instructor_id 열이 있는데, 사용자 테이블 (강사 역할이있는 사용자)의 ID가 있어야합니다.

그래서 어떻게 모델에서 연결을 설정할 수 있습니까? 사용자 모델에서 has_many :scheduled_sessions을 추가하는 것이 옳지 않은 것처럼 보입니다. 역할이 영업 사원이나 관리자 인 경우에는 올바르게 작동하지 않기 때문입니다. 또는 ScheduledSession 모델에서 belongs_to :user, :as instructor과 같은 설정을 사용하지만 오류 Unknown key :as이 표시됩니다.

어떻게 설정 하시겠습니까?

답변

1

belongs_to를 ScheduledSession 모델에서 약간 다르게 설정하려고합니다.

belongs_to :instructor, :class_name => 'User, :foreign_key => 'user_id' 

이렇게하면 ScheduledSession 객체의 instructor를 참조하고 사용자 테이블의 실체를 가리 가질 수 있습니다.

단일 역할을 가진 각 사용자와 함께 역할 기반 사용자를 수행하려는 경우 사용자 모델에 has_many 관계가없는 방법은 없습니다. 이를 사용하지 않으면 사용자와 관련된 scheduled_sessions를 검색 할 수있는 메커니즘이 없습니다.

대신 여기에 단일 테이블 상속을 사용할 수도 있습니다. 이렇게하면 SchededSessions가없는 Admin 사용자를 만들 수 있지만 수행자는 필요하지 않습니다. 이 모든 것을 같은 테이블에 저장하지만 ActiveRecord를 사용하면 쉽게 구분할 수 있습니다.

관련 문제