我正在使用CanCan
. 有一个用户注册页面和一个管理员命名空间,管理员在其中管理用户。有 2 种能力:“ normal
”和“ admin_ability
”用于网站的管理部分:
namespace :admin do
resources :users
end
如何限制访问,以便:
任何人都可以通过注册创建用户
用户可以自己编辑和删除
管理员可以对任何用户进行删除
我试图这样做,但没有找到如何做我想要的。你的意见?
我正在使用CanCan
. 有一个用户注册页面和一个管理员命名空间,管理员在其中管理用户。有 2 种能力:“ normal
”和“ admin_ability
”用于网站的管理部分:
namespace :admin do
resources :users
end
如何限制访问,以便:
任何人都可以通过注册创建用户
用户可以自己编辑和删除
管理员可以对任何用户进行删除
我试图这样做,但没有找到如何做我想要的。你的意见?
你需要在你的能力模型中定义权限,放在 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