[英]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.