-1

我想设置一个应用程序,每个用户可以在网络中拥有不同的角色。

所以用户 A 是网络 X 中的“管理员”,同时也是网络 Y 中的“客户”。每个角色在网络中都有自己的能力。例如管理员可以创建帖子,客户只能销毁他自己的评论等。

实现此设置的最佳表结构是什么?我应该使用 Devise + CanCan + ... 设置吗?

4

1 回答 1

2

有一个名为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 实例

于 2012-12-24T11:13:45.257 回答