cancan不能使用activeadmin 0.4.4

时间:2014-07-21 07:47:11

标签: ruby-on-rails activeadmin cancan

我无法做到这一点。

我有一个使用activeadmin 0.4.4并设计工作的项目,我需要包含基于角色的权限,所以我想到了CanCan。角色可以是“管理员”。或者'发布商',管理员只能管理所有发布商和发布商。

我关注https://github.com/gregbell/active_admin/wiki/How-to-work-with-cancan-with-activeadmin,AdminUser crud工作正常,config.authentication_method =:authenticate_admin_user! alredy uncomment。

在我的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

Ability initialize方法未执行。我试过中止, - 评论建议 - 或者p,甚至sintax错误,我什么都没有。我在做什么?

我被困在这里,我也试过了http://www.activeadmin.info/docs/13-authorization-adapter.html#using_the_cancan_adapter但它正在升级未定义的方法"授权适配器",我不确定这是否适用于我的activeadmin版本。并添加一个require active_admin / cancan_adapter会引发LoadError。

感谢。

1 个答案:

答案 0 :(得分:0)

最后,我感谢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
    #...
end