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

标签 ruby cancan rails-engines

我是 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/

相关文章:

ruby-on-rails-4 - Rails 引擎 4.2 中的 Rake 任务失败快速 gem 警告 : already initialized constant STATS_DIRECTORIES

ruby-on-rails - 从 header 中获取值到模型中

ruby-on-rails - 将默认角色添加到 Devise 用户模型

ruby-on-rails - cancancan authorize_resource 未按预期工作

ruby-on-rails - Rails 路由父 ID 名称和 CanCan 问题

ruby-on-rails - 在独立的 Rails 引擎中从父应用访问助手

ruby-on-rails - 使用嵌套在模块中的关注点

ruby-on-rails - 如何在 Rails 中声明动态路由作用域/命名空间变量?

ruby-on-rails - 当我运行 heroku run rake db :migrate in production 时出现此错误

html - 如何获取从表单上传的文件以使用 Rails 显示到另一个 View ?