gpt4 book ai didi

ruby - 在引擎中使用 CanCan。 Ability.rb 例子

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:31 27 4
gpt4 key购买 nike

我是 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?'

我做错了什么?

最佳答案

github issue 上的一些讨论:ryanb/cancan

关于ruby - 在引擎中使用 CanCan。 Ability.rb 例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com