引擎中的康康康
Cancancan in a engine
我想在引擎中使用 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
我错在哪里?发布的链接之一真的是解决方案还是 wrong/outdated?有没有在引擎中使用 cancancan 的好教程?谢谢!
您的 WelcomeController
中有 load_and_authorize_resource
,它正在尝试加载不存在的 Welcome
模型。相反,尝试使用 authorize_resource class: false
,所以
class WelcomeController < ApplicationController
authorize_resource class: false
# rest of your code
end
我可以通过将 Cancancan 从 1.9.2 更新到实际的 1.10.1 来解决我的问题,并将我的引擎与来自 post 的引擎进行比较:https://github.com/CanCanCommunity/cancancan/issues/151#issuecomment-69487040
我想在引擎中使用 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
我错在哪里?发布的链接之一真的是解决方案还是 wrong/outdated?有没有在引擎中使用 cancancan 的好教程?谢谢!
您的 WelcomeController
中有 load_and_authorize_resource
,它正在尝试加载不存在的 Welcome
模型。相反,尝试使用 authorize_resource class: false
,所以
class WelcomeController < ApplicationController
authorize_resource class: false
# rest of your code
end
我可以通过将 Cancancan 从 1.9.2 更新到实际的 1.10.1 来解决我的问题,并将我的引擎与来自 post 的引擎进行比较:https://github.com/CanCanCommunity/cancancan/issues/151#issuecomment-69487040