我有應用程序和引擎(gems,Rails :: Engine)。 CanCan用於授權,我想在引擎中使用它。 發動機分離的命名空間,但是,例如:CanCan的能力和附加規則引擎
module MyEngine
class ApplicationController < ::ApplicationController
end
end
所以,我可以用在控制器load_and_authorize_resource(必須指定模型類名)和「可以」幫手也。我必須在主應用程序中寫入能力的所有能力(來自引擎的模型必須是命名空間)。這不是很好的方式。我想在這個引擎中指定引擎的能力,但不需要創建新的能力對象。 我該怎麼做?任何想法?
其中一個解決方案:在引擎中將'MyEngine :: Ability'類作爲模型('include :: CanCan :: Ability'),並在這裏編寫引擎的功能。將'before_filter'添加到'ApplicationController'中,它會生成'current_ability.merge(MyEngine :: Ability.new(current_user))'。也許這是我想要的... –