【发布时间】:2017-07-04 06:25:41
【问题描述】:
我必须在我的应用中实现角色系统以进行授权。我们的系统中有大约 5 种角色。
为了维持这些角色,我们有 2 个选择,
备选方案#1
1.在rails角色模型中创建枚举,
enum role: {super_admin: 1, translator: 2, approver: 3, sales_admin: 4, marketing_admin: 5, guest: 6}
2.在 Roles 表中,现在我们将有 ID user_id role_id
备选方案#2
1.创建2个模型Role and Role_User。
Role 表将仅包含 ID | role_name 而 Role_User 将包含 ID | user_id | role_id
应该首选哪个?
【问题讨论】:
-
我认为这没有什么特定的规则。这更多的是您对特定系统和个人偏好的估计。就个人而言,我更喜欢单独的表格而不是枚举
-
存储在数据库中意味着任何使用 SQL(报告、独立 SQL 查询等)的人都可以使用数据,但从性能的角度来看,我更喜欢枚举。备选方案 3 是两者都做,这涵盖了所有基础但增加了额外的工作。
-
我建议采用第二种方法,因为它可以让您灵活地添加新角色,而无需更改和部署应用程序代码。此外,保持实体清晰和分离总是好的。
标签: mysql ruby-on-rails ruby-on-rails-4 enums