【问题标题】:Multiple roles of devise设计的多重角色
【发布时间】:2012-11-03 05:49:11
【问题描述】:

我已经看到链接https://github.com/plataformatec/devise 用于为多个角色配置设计。但我对devise 将如何识别特定useradmin 的事实感到困惑? 请解释一下,因为管理员没有任何注册过程。我也是ror 的新手,所以请解释一下为多个角色配置设备的所有步骤?

【问题讨论】:

    标签: devise ruby-on-rails-3.2


    【解决方案1】:

    CanCan 是迄今为止您最好的 ruby​​ 角色解决方案,我建议您查看 Tony's Usage of Devise/CanCan 以创建基于角色的系统。我花了一点时间才弄清楚如何解决这个问题,但现在它对我来说非常有用。

    第二种方法是

    我会推荐一个榜样。在这种情况下,用户将have_and_belong_to_many :roles,而角色将have_and_belong_to_many :users。这在角色和用户之间创建了多对多关系。有关关联的更多信息,请参阅thisRailsGuide。

    在您的 CanCan ability.rb 文件中,您可以执行以下操作(我只是在猜测您的设置):

     can :manage, Brand do |brand|
      user.has_role?("brand_manager") && user.brands.include?(brand)
    end
    

    在你的 user.rb 文件中这样写会很有帮助:

    def has_role?(name)
      role = Role.find_by_name(name)
      (self.roles.include?(role)) ? (return true) : (return false)
    end
    

    希望这会有所帮助。

    【讨论】:

    • Dipak,您指向 Tony's Usage of Devise/CanCan 的链接正在链接到 Rails 指南。
    【解决方案2】:

    有关使用 Rails 5DeviseCanCanCan(CanCan 似乎不再受支持)的更新解决方案,请查看:

    1. RAILS 5: USER ACCOUNTS WITH 3 TYPES OF ROLES – DEVISE, RAILS_ADMIN, CANCANCAN

    这是使用 Rails Pundithas_secure_password 的替代解决方案:

    1. Implementing Roles and Permissions in Ruby on Rails

    使用 CanCanCan 的优势在于它将授权与用户角色分离,而许多人发现 Pundit 更易于使用且侵入性更小。两者都很好。

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 2014-09-10
      • 2012-10-25
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      相关资源
      最近更新 更多