我想在引擎中使用 rails gem cancancan ( https://github.com/CanCanCommunity/cancancan )。所以我将它添加到我的 gemspec 文件中,如下所示:
s.add_dependency "cancancan"
在引擎虚拟应用程序和测试应用程序中,我加载了我的引擎,并且总是收到有关每个 cancancan 方法的未定义方法的错误。
undefined local variable or method `load_and_authorize_resource'
undefined local variable or method `can?'
[...]
这是我ability.rb
在主应用程序中的文件:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
can :manage, :all
end
end
我尝试了几种在引擎中使用 cancancan 的解决方案,但没有找到适合我的引擎的解决方案。这里有些例子:
- http://mx.kelsin.net/2011/08/10/using-cancan-in-a-engine-and-your-app/
- https://github.com/CanCanCommunity/cancancan/wiki/Authorization-for-Namespaced-Controllers
- https://github.com/CanCanCommunity/cancancan/wiki/Admin-Namespace
我的错在哪里?发布的链接之一真的是解决方案还是错误/过时?有没有在引擎中使用 cancancan 的好教程?谢谢!