如何解决CanCan 能力忽略应该禁止访问的条件? 我认为正在发生的事情
在ability.rb
can :edit,Physician,user_id: user.id
如果我的理解是正确的,这应该查看控制器中的physician 实例,取其user_id
属性,并且仅在匹配当前用户id 时才允许访问。
相反,任何人都可以访问其他人的 edit
操作! (坏)
我认为正在发生的事情
get 'physicians/:physicianname/edit' => 'physicians#edit'
在编辑控制器中:
@physician = Physician.find_by(physicianname: params[:physicianname])
由于我没有以通常的方式查找医生(使用 :id),我认为一些康康魔术/默认设置没有按应有的方式应用。
但我不知道为什么,或者我必须做些什么才能让它发挥作用。
解决方法
我认为您错过了应该引发未经授权响应的检查。在你的行动中,你应该有这样的东西:
@physician = Physician.find_by(physicianname: params[:physicianname])
authorize! :edit,@physician
看看gem wiki
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。