CanCan 能忽略一个应该禁止访问的条件吗?
CanCan ability ignores a condition that should disallow access?
在ability.rb
can :edit, Physician, user_id: user.id
如果我的理解是正确的,这个应该看controller中physician的实例,取其user_id
属性,只有匹配当前用户id才允许访问
相反,任何人都可以访问任何其他人的 edit
操作! (不好)
我认为发生了什么
我有一个用于编辑操作的自定义路由:
get 'physicians/:physicianname/edit' => 'physicians#edit'
在编辑控制器中:
@physician = Physician.find_by(physicianname: params[:physicianname])
由于我没有以通常的方式(使用 :id)查找医生,我认为一些 cancan magic/defaults 没有按应有的方式申请。
但我不知道为什么,也不知道我必须做什么才能让它发挥作用。
我认为您错过了应该引发未授权响应的检查。在你的行动中,你应该有这样的东西:
@physician = Physician.find_by(physicianname: params[:physicianname])
authorize! :edit, @physician
看看gem wiki
在ability.rb
can :edit, Physician, user_id: user.id
如果我的理解是正确的,这个应该看controller中physician的实例,取其user_id
属性,只有匹配当前用户id才允许访问
相反,任何人都可以访问任何其他人的 edit
操作! (不好)
我认为发生了什么
我有一个用于编辑操作的自定义路由:
get 'physicians/:physicianname/edit' => 'physicians#edit'
在编辑控制器中:
@physician = Physician.find_by(physicianname: params[:physicianname])
由于我没有以通常的方式(使用 :id)查找医生,我认为一些 cancan magic/defaults 没有按应有的方式申请。
但我不知道为什么,也不知道我必须做什么才能让它发挥作用。
我认为您错过了应该引发未授权响应的检查。在你的行动中,你应该有这样的东西:
@physician = Physician.find_by(physicianname: params[:physicianname])
authorize! :edit, @physician
看看gem wiki