2014-10-23 7 views
0

사용자 권한 부여에 Activeadmin 및 Cancan을 사용하고 있습니다. 모든 표준 페이지에서 정상적으로 작동하지만 사용자 정의 페이지에서는 Cancan 's Abilities에 값을 전달하는 데 어려움을 겪고 있습니다. 내 사용자 지정 활성 관리자 페이지에서 내가 능력에Activeadmin 사용자 지정 페이지 및 Cancan

controller do 
    prepend_before_filter :filter_method 

    def filter_method 
    @project = Project.find(params[:id]) 
    authorize! :show, @project 
    end 
end 

이 나는 ​​이제 이 권한을 부여 것으로 기대했다

can :manage, ActiveAdmin::Page, :name => "Project Preview", :poster_id => user.user_id 

있다! : show, @project cancan에 프로젝트 값을 전달하지만, "얻지 못한 것은"정의되지 않은 메소드`poster_id ' "입니다. 나는 몇 시간 동안 이걸 가지고 놀았고 완전히 고집되어서 어떤 충고라도 크게 감사 할 것입니다.

답변

1

페이지 컨트롤러의 authorize_access! 메서드를 재정의해야합니다. 참조 용으로 ActiveAdmin::PageController 구현을 참조하십시오.

ActiveAdmin.register_page "Project Page with Authorization" do 
    content do 
    # page content 
    end 

    controller do 
    private 

    def find_project 
     @project = Project.find(params[:id]) 
    end 

    def authorize_access! 
     find_project 
     authorize! :show, @project 
    end 
    end 
end 

능력 검사 만 프로젝트에 대해 확인 될하지 ActiveAdmin을 :: 페이지 :

can :show, Project, :poster_id => user.user_id 

또한 기본적으로 페이지 뷰가 실제로 index 컨트롤러 작업입니다 및 전달 있습니다 검사의 대상으로 active_admin_config을 확인하십시오.

+0

멋진 정보! 고맙습니다. – charliez

관련 문제