要使用cancan创建一个支持在Rails中授权的应用程序,由开发人员决定角色方法是什么。现在我需要找出最适合我的情况 - 这是传统的每个用户一个角色的模型。
我发现的方法似乎与我非常相似。我想知道在选择榜样时是否真的存在技术差异,或者只是偏好问题?如果存在技术差异,那么在选择一种或另一种模型时,特别是在缩放方面,需要权衡什么?
我能找到的一些可能的模型:
- 使用宝石罗利夫
- 使用单表继承
- 在用户表中使用行
- 根据每个用户类型的角色为其分隔表
- 多表继承
- 包含角色和使用关系的表
评论中比较这些方法的文章的要点,因为我找不到太多比较它们的材料。
如果每次使用只需要一个角色,只需使用最简单的方法即可。
- 向用户添加单个字符串字段;称为"角色"。
- 将数组添加到用户以保存值:
ROLES = %w{System Admin Admin Customer Etc}
- 向用户添加一些帮助程序方法,以便您可以轻松检查角色(即 user.admin?
角色帮助程序:
ROLES.each do |role_name|
define_method "#{role_name.downcase.tr(" ", "_")}?" do
role == role_name
end
end
如果需要,您可以在将来轻松利用更复杂的选项。