我有应用程序和引擎(gem,Rails::Engine)。CanCan用于授权,我想在引擎中使用它。引擎与命名空间隔离,但例如:
module MyEngine
class ApplicationController < ::ApplicationController
end
end因此,我可以在控制器(必须指定模型类名)和' can‘帮助器中使用load_and_authorize_resource。我必须在主应用程序中写入所有能力(引擎中的模型必须有名称空间)。这不是一种很好的方式。我想在这个引擎上指定引擎的能力,但没有创建新的能力对象。我该怎么做呢?有什么想法吗?
发布于 2012-08-22 08:56:01
它不是非常漂亮,但我用我目前正在编写的一个Rails应用程序做了类似的事情。我已经在这个名为FormX的应用程序中编写了自己的引擎,这是一种表单CMS引擎。我希望用户能够只编辑表单的某些响应,并且只有一些用户能够创建表单。
鉴于我在Formx名称空间中有一个Form模型,我能够通过使用Formx::Form语法在我的MainApp ability.rb文件中定义功能。
例如。
can :manage, Formx::Form然后在我的控制器中,我必须在每个操作中手动放置authorize!调用,因为我不能让load_and_authorize_resource在引擎的名称空间中工作。
https://stackoverflow.com/questions/12064958
复制相似问题