CanCan和多态类未授权访问此页面

时间:2017-09-21 20:11:16

标签: ruby-on-rails cancan polymorphic-associations cancancan

对于名为Notes的多态模型,CanCan能力存在问题。用户可以向当前客户和潜在员工添加注释。每个人都可以访问当前的客户,但只有招聘团队才能查看潜在的员工。 问题在于

cannot :manage, Recruit

在员工的能力档案中,他们突然无法向他们有权访问的客户添加备注。 在recruit.rb和client.rb类中的Notes关联代码:

has_many :notes, -> { order "notes.updated_at DESC" }, as: :noteable, dependent: :destroy
accepts_nested_attributes_for :notes, :reject_if => :all_blank, allow_destroy:true

notes_controller.rb

load_and_authorize_resource :recruit
load_and_authorize_resource :client
load_and_authorize_resource :note, :through => [:recruit, :client] 

ability.rb

if user.has_role? :staff
  can :manage, :all
  cannot :manage, Recruit
end

if user.has_role? :admin
  can :manage, :all
end

据我所知,没有其他人有这个错误。这是一个有趣的行为。该应用程序不会授权任何笔记,因为用户无权在所有可添加的笔记上添加笔记。

编辑:

我尝试过的事情,但都失败了。

notes_controller.rb: 移除load_and_authorize :recruitthrough => :recruit 这可以让员工为他们的可访问模型添加注释,但是删除了管理员为新员工添加注释的能力。

ability.rb: 将can :manage, Note, noteable_type: 'Recruit'添加到文件的管理部分不会恢复此功能。

0 个答案:

没有答案