2012-09-12 1 views
0

사용자가 여러 역할을 가질 수있는 레일스 앱에서 작업하고 있습니다. 관리자, 직원, 관리자 등역할은 다르지만 개별 데이터가있는 사용자 모델?

여러 가지 역할로 인해 STI가 작동하지 않지만 가능한 경우 다른 테이블에서 역할 관련 데이터를 유지하려고합니다.

create_table :roles do |t| 
    t.string :name 
    t.timestamps 
end 

create_table :users do |t| 
    t.string :first_name 
    t.string :last_name 
    t.string :email, :default => "", :null => false 
    t.timestamps 
end 

create_table :roles_users, :id => false do |t| 
    t.references :role, :user 
end 

그리고 내 사용자/역할 모델 모두 서로 has_and_belongs_to_many 관계를 가지고 지금에 따라서

, 내 스키마는 다음과 같이 보인다.

예를 들어 관리자에게 have_many 명의 직원이 필요하면이 설정으로 가능합니까? Manager 역할을 가진 사용자가 secret_manager_information과 같은 Manager 관련 특성을 가질 수 있습니까? 아니면 내 접근 방식을 다시 생각해야합니까?

답변

1

관리자가 어떻게 직원을 추적해야 하는지를보고 (일반적으로 다른 역할은 다른 특수 데이터를 추적해야 할 수도 있음), 각각의 역할이 서로 다르기 때문에 자신의 테이블을 가져야한다고 가정합니다. 역할이 너무 많지 않음).

예를 들어, 나는 관리자와 직원 모델을 만들 것입니다 :

class Manager 
    attr_accessible :user_id 
    has_many :employees 
end 

class Employee 
    attr_accessible :user_id, :manager_id 
    belongs_to :manager 
end 

관리자가 USER_ID = user.id.와 관리자 테이블에 기록이됩니다 모든 사용자 Employee 인 모든 사용자는 user_id = user.id 및 manager_id = (해당 관리자 레코드의 ID)로 Employee 테이블에 레코드를 갖습니다.

+0

이렇게해야 할 일이 생겼습니다. 도와 주셔서 감사합니다. –

관련 문제