몇 가지 일반 양식 기능을 위해 자체 엔진을 구축 한 Rails 응용 프로그램에서 CanCan 권한을 사용하고 있습니다. 사용자가 내 엔진 컨트롤러의 동작에 자유롭게 액세스 할 수 없도록 내 시스템의 사용 권한을 잠그고 싶습니다. 이 컨트롤러는 대부분 7 가지 REST 동작을 사용하기 때문에 CanCan의 load_and_authorize_resource
을 각 컨트롤러의 맨 위에 사용하고 싶습니다. 나는이 같은 내 코드를 작성할 때CanCan : MainApp 이외의 네임 스페이스에서 load_and_authorize_resource
그러나 :
module MyEngine
class FormController < ApplicationController
load_and_authorize_resource
...
end
end
나는이 오류가 발생합니다 :
내 생각이load_and_authorize_resource
의 자동 로더가 내 MainApp 네임 스페이스에 연결되어 있는지
uninitialized constant Form
및 다른 네임 스페이스에서 호출한다는 것을 인식하지 못하므로 MyEngine::Form.find(params[:id])
대신 Form.find(params[:id])
과 같은 호출이 수행됩니다.
이 경우 어떻게 해결할 수 있습니까? authorize!
이 여전히 올바르게 작동하기 때문에 엄청난 문제가 아니므로 각 작업마다 개별적으로 인증을 정의 할 수 있지만 load_and_authorize_resource
메서드를 사용할 수 있다면 훨씬 더 깨끗합니다.
가능한 [CanCan을 사용하는 네임 스페이스 컨트롤러 및 중첩 컨트롤러 인증] 복제본 (http://stackoverflow.com/questions/12334367/authorizing-namespaced-and-nested-controllers-using-cancan) –