RoR特定用户角色在网络内部

时间:2012-12-24 10:26:26

标签: ruby-on-rails role

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

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

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

1 个答案:

答案 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实例