限制管理员部分和用户管理的访问权限

时间:2013-05-10 12:51:32

标签: ruby-on-rails ruby cancan

我正在使用CanCan。有一个用户注册页面和一个管理员命名空间,管理员管理用户。该网站的管理员部分有2种功能:“normal”和“admin_ability”:

  namespace :admin do
    resources :users
  end 

如何限制访问权限:

  • 任何人都可以通过注册创建用户

  • 用户可以自行编辑并删除

  • 并且管理员可以使用任何用户并删除

我试图这样做,但没有找到如何做到我想要的。你的意见?

1 个答案:

答案 0 :(得分:1)

您需要在您的能力模型中定义权限,放置在app / models中。

例如,在app / model / admin_ability.rb中:

class AdminAbility
  include CanCan::Ability

  def initialize(admin)
    if admin
      can :manage, :all
    end
  end
end

然后在你的app / models / user_ability.rb中(我猜你的意思是“正常”):

class UserAbility
  include CanCan::Ability

  def initialize(user)
    if user
     user ||= User.new # guest user (not logged in)
        can :manage, User, :id => user.id
    end
end

您可以限制允许某个角色执行的操作; :manage is all,但你可以使用:read,:show,:edit,:destroy或包含其中一些的数组。

您可以在此处找到更深入的信息:https://github.com/ryanb/cancan/wiki/defining-abilities