Dee*_*dhy 5 mysql enums ruby-on-rails ruby-on-rails-4
我必须在我的应用程序中实现角色系统以进行授权。我们的系统中有大约 5 种角色。
为了维持这些角色,我们有两个选择,
替代方案#1
1.在rails角色模型中创建一个枚举,
enum role: {super_admin: 1, translator: 2, approver: 3, sales_admin: 4, marketing_admin: 5, guest: 6}
2.在角色表中,现在我们将有ID user_id role_id
替代方案#2
1.创建2个模型Role and Role_User。
Role 表将仅包含ID | role_nameRole_User 将包含ID | user_id | role_id
应该优先选择哪个?
vij*_*joc -1
单独表的另一个好处是用户可以拥有多个角色(如果您的系统需要的话)。此外,在数据库中存储不同的角色应该可以更好地强制执行数据库级数据完整性,即您不能向用户添加不存在的角色。
如果您最终确实使用单独的角色表和连接表,请务必向连接表添加正确的索引。
除此之外,它实际上取决于上下文和用例。如果系统足够简单,那么采用枚举方式没有什么问题。
| 归档时间: |
|
| 查看次数: |
2875 次 |
| 最近记录: |