我是 Rails 开发的新手,我正在尝试创建我的第一个引擎。该引擎可以使用CanCan进行授权和限制用户的权限。
我的引擎中有一些权限,我想在我的主应用程序中继承它们。
例如:
app/models/my_engine/ability.rb
我的引擎中的文件
module MyEngine
class Ability
include CanCan::Ability
def initialize(user)
user ||= MyEngine::User.new # guest user
if user.role? "Admin"
can :manage, :all
else
can :read, :all
end
end
end
end
app/models/ability.rb
我的主应用程序中的文件
class Ability < MyEngine::Ability
def initialize(user)
user ||= MyEngine::User.new # guest user
super(user)
can :create, SomeModel if user.manager?
end
end
文件app/controllers/my_engine/application_controller.rb
module MyEngine
class ApplicationController < ActionController::Base
def current_ability
@current_ability ||= MyEngine::Ability.new(current_user)
end
end
end
但这不起作用 - 如果我can?
在引擎中使用该方法,我会收到此错误:
undefined method `can?'
我究竟做错了什么?