我做不到这件事。
我有一个带有activeadmin 0.4.4并设计工作的项目,我需要包含基于角色的对它的权限,所以我想到了CanCan。这些角色可以是“管理员”或“publisher”,管理员可以管理所有的内容,而publisher只能管理一个post部分。
我跟踪了admin/wiki/How-to-work-with-cancan-with-activeadmin,AdminUser crud (它运行得很好)和config.authentication_method = :authenticate_admin_user!对此不屑一顾。
在我的ApplicationController中,我添加了以下内容:
# https://github.com/ryanb/cancan/wiki/exception-handling
rescue_from CanCan::AccessDenied do |exception|
respond_to do |format|
format.html do
redirect_to admin_root_path, :alert => exception.message
end
end
end
# https://github.com/ryanb/cancan/wiki/changing-defaults
def current_ability
@current_ability ||= Ability.new(current_admin_user)
end这是我的能力课:
class Ability
include CanCan::Ability
def initialize(user)
user ||= AdminUser.new
if user.role?('administrator')
can :manage, :all
else
can :read, :all
end
end
end“能力初始化”方法未执行。我试着放弃,-as的评论建议-放置或p,甚至新税错误,我什么也没有。我错过了什么?
我被困在这里,我也尝试过adapter,但是它正在兴起未定义的方法“授权适配器”,我不确定这是否适用于我的activeadmin版本。并且添加一个所需的active_admin/cancan_适配器会引发一个LoadError。
谢谢。
发布于 2014-07-22 09:15:57
最后我成功了多亏了http://makandracards.com/jan0sch/13877-rails-activeadmin-and-cancan
基本上,我需要在activeadmin注册页面中添加一个控制器块来加载它:
ActiveAdmin.register Whatever do
#...
controller do
load_and_authorize_resource :except => :index
def scoped_collection
end_of_association_chain.accessible_by(current_ability)
end
end
#...
endhttps://stackoverflow.com/questions/24860017
复制相似问题