我想设置一个应用,其中每个用户可以在网络中拥有不同的角色。
因此,用户A是网络X中的“管理员”,也是网络Y中的“客户端”。每个角色在网络中都有自己的功能。例如。 admin可以创建帖子,客户端只能销毁自己的评论等。
实现此设置的最佳表结构是什么?我应该使用Devise + CanCan + ...设置吗?
答案 0 :(得分:2)
有一个名为 rolify 的宝石(带有资源范围的角色管理库)gem,它也可以用devise和cancan link进行设置,让我们假设你有模型用户强>
<强>安装:强>
gem "rolify"
bundle
rails g rolify:role Role User
你可以添加角色:
user = User.find(1)
user.add_role :admin
检查:
user.has_role? :admin
如果要定义作用域资源实例的角色:
user = User.find(2)
user.add_role :moderator, Post.first
和你的能力.rb:
if user.has_role? :admin
can :manage, :all
else
can :read, Post
can :write, Post, :id => Post.with_role(:moderator, user).map{ |f| f.id }
end
请注意, with_role 方法允许我们限制用户具有角色的Post实例