我正在开发一个 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
员工,那么这种设置是否可行?具有 Manager 角色的用户是否可以具有特定于 Manager 的属性,例如secret_manager_information
?还是我需要重新考虑我的方法?