我在我的Rails应用程序中使用CanCan获取权限,我在其中为一些通用表单功能构建了自己的引擎.我想锁定系统中的权限,以便用户无法自由访问我的引擎控制器的操作.这些控制器大多只使用7个REST动作,所以我想在每个控制器的顶部使用CanCan的load_and_authorize_resource.
但是,当我像这样编写代码时:
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]).
如果是这种情况,我该如何解决这个问题?这不是一件大事,因为授权!仍然可以正常工作,所以我可以单独定义每个操作中的授权,但如果我能够使用load_and_authorize_resource方法,它会感觉更清洁.