0

내 레일 응용 프로그램에서 선언적 인증을 사용하고, 나는 다음과 같은 컨트롤러가 : 그 행동을보기에 액세스하려고 할 때선언적 인증 차단 인스턴스 변수

class OrganizationsController < ApplicationController 
    filter_resource_access attribute_check: true 

    def index 
    @organizations = Organization.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @organizations } 
    end 
    end 
end 

, 나는 오류가 @organizations 인스턴스 변수에 액세스하려고 시도하는 행에 undefined method 'each' for nil:NilClass이 있습니다. 그것은 내가 filter_resource_access 라인을 주석 처리 할 때 작동합니다.

의견이 있으십니까?

답변

0

오류는 인스턴스 변수가 Nil이므로 Nil : NilClass에 대해 각각 정의되지 않은 메서드가 표시되는 이유입니다. 필터는 컨트롤러 전후에 실행되는 메서드입니다.이 경우에는 그 메서드가 의미하는 것이 정확히 무엇인지는 모르지만 컨트롤러가 추측 할 때까지 데이터에 액세스하지 못하게합니다.

0

명백히 내 Gemfile에 declarative_authorization gem을 포함하는 것을 잊었습니다. : 수치 :

모두 작동 중입니다.