cancan角色策略策略比较/权衡

时间:2013-09-07 21:10:03

标签: ruby-on-rails database-design authorization cancan roles

要使用cancan创建支持Rails授权的应用程序,开发人员可以决定角色方法是什么。现在我需要找出最适合我的情况 - 它是传统的单用户角色模型。

我发现的方法似乎与我非常相似。我想知道在选择榜样时是否真的存在技术差异,或者仅仅是偏好问题?如果存在技术差异,那么在选择一种模式或另一种模式时需要权衡什么,特别是关于缩放?

我可以找到一些可能的模型:

在评论中比较这些方法的文章的观点值得赞赏,因为我找不到比较它们的更多材料。

1 个答案:

答案 0 :(得分:1)

如果您每次使用只需要一个角色,请使用最简单的方法。

  1. 向用户添加单个字符串字段;称为“角色”。
  2. 向用户添加数组以保存值:ROLES = %w{System\ Admin Admin Customer Etc}
  3. 为用户添加一些帮助方法,以便您可以轻松检查角色(即user.admin?)
  4. 角色助手:

    ROLES.each do |role_name|
      define_method "#{role_name.downcase.tr(" ", "_")}?" do
        role == role_name
      end
    end
    

    如果需要,您可以在将来轻松利用更复杂的选项。