在Rails引擎中使用Ability类

时间:2012-08-21 11:18:18

标签: ruby ruby-on-rails-3.2 cancan

我在名为Support的lib文件夹中有一个引擎。在该文件夹中,我有一个Ticket控制器。

我在主应用程序中创建了一个能力类,我正在尝试管理管理员角色的所有模型。当我调用Tickets控制器时,它会抛出错误:

NameError in Support::TicketsController#index uninitialized constant Ticket

app / model / ability.rb 文件是:

class Ability 
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    if user.role? == :admin
      can :manage , :all
    end
  end
end

lib / support / tickets_controller.rb 文件是:

module Support
  class TicketsController < Support::ApplicationController
    load_and_authorize_resource
    respond_to :html, :xml, :json

    def index
    end
  end
end

1 个答案:

答案 0 :(得分:0)

如果模型类的名称空间与控制器不同,则需要指定:class选项。

module Support
  class TicketsController < ApplicationController
    load_and_authorize_resource :class => Support::Ticket
  end
end