0

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

  namespace :admin do
    resources :users
  end 

如何限制访问,以便:

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

  • 用户可以自己编辑和删除

  • 管理员可以对任何用户进行删除

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

4

1 回答 1

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 就是全部,但您可以使用 :read、:show、:edit、:destroy 或其中的一些数组。

你可以在这里找到更深入的信息:https ://github.com/ryanb/cancan/wiki/defining-abilities

于 2013-05-10T13:06:07.763 回答