2012-09-12 89 views
0

我工作的一個Rails應用程序,用戶可以擁有多個角色,例如經理,僱員,管理等具有不同角色但離散數據的用戶模型?

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員工,是可能與此設置?是否有可能與經理角色的用戶能有像secret_manager_information特定的管理屬性?還是我需要重新考慮我的方法?

回答

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 =(相應經理記錄的編號)

+0

看起來這是我必須要做的。謝謝您的幫助。 –

相關問題