设计的多重角色

时间:2012-11-03 05:49:12

标签: devise ruby-on-rails-3.2

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

2 个答案:

答案 0 :(得分:2)

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

第二种方式是

我会推荐一个榜样。在此方案中,用户have_and_belong_to_many :roles,而角色将have_and_belong_to_many :users。这会在角色和用户之间创建多对多的关系。有关关联的更多信息,请参阅this RailsGuide。

在您的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

希望这有帮助。

答案 1 :(得分:0)

对于使用 Rails 5 DeviseCanCanCan的更新解决方案(CanCan看起来不再受支持),请查看此信息:

  1. RAILS 5: USER ACCOUNTS WITH 3 TYPES OF ROLES – DEVISE, RAILS_ADMIN, CANCANCAN
  2. 以下是使用Rails Pundit has_secure_password 的替代解决方案:

    1. Implementing Roles and Permissions in Ruby on Rails
    2. 使用CanCanCan的优势在于它将授权与用户角色分离,而很多人发现Pundit更容易以更少侵入性工作。两者都很好。