2016-07-30 39 views
0

,使用权限宝石权威人士来实现。我有3个模型用户,角色,roles_users,因为我在用户和角色之间有many_to_many关系。我想编辑用户角色。轨道4 - 我有轨道4应用与用户,角色更新用户角色权限

class User 
    has_and_belongs_to_many :roles 
end 

class role 
    has_and_belongs_to_many :users 
end 

存储user_id和role_id的第3个表role_users。

因此,假设我想编辑用户角色我应该遵循什么办法。我应该从第三张表中删除现有记录,即roles_users,然后创建显示角色的新记录。请建议。

回答

2

不知道如果你还在工作,否则什么你究竟要完成的,而是绕过去处理用户的角色与权威人士的好办法正在与色器件来处理用户配置文件,并创建一个管理员帐户。管理员可以将特定用户的角色更改为您拥有的任何角色(即用户,贵宾,主持人,编辑者,管理员等)。天空是你希望你的应用有多种角色的复杂程度的限制。在用户模型中的使用“枚举”,将有助于引导你的角色选择:

class User < ActiveRecord::Base 

    enum role: [:user, :vip, :admin] 
    after_initialize :set_default_role, :if => :new_record? 

    def set_default_role 
    self.role ||= :user 
    end 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

end 

这种方式,你可以设置一个新用户的默认角色是一个普通用户,然后管理员可以更新用户新用户应该扮演的角色。如果您想要一个更复杂的应用程序与多个公司/组,可以将其应用于多租户应用程序。然后评论家的政策和范围将起作用,以确定谁有权在您的应用中执行某些操作。例如:

  • 管理员可以看到用户
  • 管理员可以更改用户的角色
  • 管理员和编辑器可以创建,编辑列表,删除,更新博客文章
  • 普通用户无法看到用户
  • 普通用户不能更改自己的角色
  • 普通用户无法看到(或修改)其他用户的个人资料
  • 的一般负责的列表Ÿ用户可以看到(和编辑)自己的用户配置文件
  • 普通用户不能编辑,删除或更新的博客文章
  • 一个普通的用户可以看到发布的博客文章

一个很好的资源要开始使用示例应用程序,请遵循Rails-devise-pundit示例应用程序,该示例应用程序将引导您使用用户角色设置相当好的事物。如果您更直观,则可以按照此YouTube视频进行操作:Rails Authorization with Pundit。如果您还想在创建用户角色时使用rspec进行测试,则该视频非常棒。

希望这个操纵你的,你要完成什么样的正确方向。