1

我想在引擎中使用 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 的解决方案,但没有找到适合我的引擎的解决方案。这里有些例子:

我的错在哪里?发布的链接之一真的是解决方案还是错误/过时?有没有在引擎中使用 cancancan 的好教程?谢谢!

4

2 回答 2

1

我可以通过将 Cancancan 从 1.9.2 更新到实际的 1.10.1 来解决我的问题,并将我的引擎与这篇文章中的引擎进行比较:https ://github.com/CanCanCommunity/cancancan/issues/151#issuecomment-69487040

于 2015-02-17T12:37:01.687 回答
0

你有load_and_authorize_resource你的WelcomeController,它正在尝试加载Welcome不存在的模型。相反,尝试使用authorize_resource class: false,所以

 class WelcomeController < ApplicationController
   authorize_resource class: false
   # rest of your code
 end
于 2015-01-07T15:27:26.107 回答