我在我的 Rails 应用程序中使用 CanCan 来获取权限,在该应用程序中,我为一些通用表单功能构建了自己的引擎。我想锁定我系统中的权限,以便用户无法自由访问我的引擎控制器的操作。在大多数情况下,这些控制器只使用 7 个 REST 动作,所以我想load_and_authorize_resource
在每个控制器的顶部使用 CanCan。
但是,当我这样编写代码时:
module MyEngine
class FormController < ApplicationController
load_and_authorize_resource
...
end
end
我收到此错误:
uninitialized constant Form
我的猜测是,自动加载程序load_and_authorize_resource
与我的 MainApp 命名空间相关联,并且无法识别我在不同的命名空间中调用它,因此调用类似Form.find(params[:id])
而不是MyEngine::Form.find(params[:id])
.
如果是这种情况,我该如何解决?这不是什么大问题,因为authorize!
仍然可以正常工作,所以我可以在每个操作中单独定义授权,但是如果我能够使用该load_and_authorize_resource
方法,感觉会更干净。