簡體   English   中英

在Rails中使用cancan gem時遇到的問題

[英]Facing issues while using cancan gem in rails4

嗨,我是第一次使用康康寶石。 我已將此包含在我的gem文件中

gem 'cancancan', '~> 1.10'

然后完成捆綁安裝並運行命令軌g cancan:ability,通過該能力生成我的ability.rb,並在其中給出了此代碼

class Ability
  include CanCan::Ability

  def initialize(employee)
    employee ||= Employee.new
    if employee[:role]== 'HR'
      can :manage, :all
    else
      can :read, :all
    end
  end
end

並在我的application_Controller給定

rescue_from CanCan::AccessDenied do |exception|
    flash[:error] = "Access denied."
    redirect_to root_url
 end

現在我已經用employee [:role] ='HR'登錄,當我要創建部門時,它給了我錯誤

NameError (undefined local variable or method `current_user' for #<DepartmentsController:0xb48a0c0>):
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_additions.rb:357:in `current_ability'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:215:in `current_ability'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:98:in `initial_attributes'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:91:in `assign_attributes'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:86:in `build_resource'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:66:in `load_resource_instance'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:32:in `load_resource'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:25:in `load_and_authorize_resource'
  vendor/ruby/2.1.0/gems/cancancan-1.10.1/lib/cancan/controller_resource.rb:10:in `block in add_before_filter'

在此處輸入圖片說明

請指導我如何解決此問題。 提前致謝。

您必須在application_controller.rb中覆蓋current_ability方法

def current_ability
   @current_ability ||= Ability.new(your_current_logged_in_employer_object)
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM