응용 프로그램과 엔진 (gems, Rails :: Engine)이 있습니다. CanCan이 승인에 사용되었으며 엔진에서 사용하고 싶습니다. 엔진 네임 스페이스와 격리 있지만, 예를 들어 :엔진 별 CanCan 기능 및 추가 규칙
module MyEngine
class ApplicationController < ::ApplicationController
end
end
그래서, 나는 또한 컨트롤러에서 load_and_authorize_resource (모델 클래스 이름을 지정해야합니다)와 '수'도우미를 사용할 수 있습니다. 주 신청시 능력에 기고해야하는 모든 능력 (엔진 모델은 네임 스페이스가되어야합니다). 그것은 좋은 방법이 아닙니다. 이 엔진에서 엔진에 대한 능력을 지정하고 싶지만 새로운 능력 객체를 만들지는 않습니다. 어떻게해야합니까? 어떤 생각?
해결책 중 하나 : 엔진에서'MyEngine :: Ability' 클래스를 모델로 만듭니다 ('include :: CanCan :: Ability'도). 여기에 엔진에 대한 기술을 작성하십시오. 'current_ability.merge (MyEngine :: Ability.new (current_user))'를 만드는'ApplicationController'에'before_filter'를 추가하십시오. 어쩌면 내가 원하는 것입니다 ... –