我想设置一个应用程序,每个用户可以在网络中拥有不同的角色。
所以用户 A 是网络 X 中的“管理员”,同时也是网络 Y 中的“客户”。每个角色在网络中都有自己的能力。例如管理员可以创建帖子,客户只能销毁他自己的评论等。
实现此设置的最佳表结构是什么?我应该使用 Devise + CanCan + ... 设置吗?
我想设置一个应用程序,每个用户可以在网络中拥有不同的角色。
所以用户 A 是网络 X 中的“管理员”,同时也是网络 Y 中的“客户”。每个角色在网络中都有自己的能力。例如管理员可以创建帖子,客户只能销毁他自己的评论等。
实现此设置的最佳表结构是什么?我应该使用 Devise + CanCan + ... 设置吗?
有一个名为rolify的 gem (具有资源范围的角色管理库)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
在你的ability.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 实例