使用CanCan中的load_and_authorize_resource
,您可以使用:only
或:except
选择授权的操作。即load_and_authorize_resource :only => [:index, :show]
我想在嵌套资源中做同样的事情,但无法让它工作。
我有一个嵌套资源,如:
class TasksController < ApplicationController
load_and_authorize_resource :project
load_and_authorize_resource :task, :through => :project
end
并试图限制“:点击”操作:
class TasksController < ApplicationController
load_and_authorize_resource :project
load_and_authorize_resource :task, :through => :project, :except => :click
end
但这不起作用。任何想法如何使用嵌套资源选择某些操作?
答案 0 :(得分:3)
见here。
要跳过嵌套控制器skip_authorize_resource
上的操作的授权,需要按以下方式使用。
class TasksController < ApplicationController
load_and_authorize_resource :project
load_and_authorize_resource :through => :project
skip_authorize_resource :only => :click
skip_authorize_resource :project, :only => :click
end
第一个skip_authorize_resource跳过任务的授权检查,第二个跳过项目的授权检查。如果您想跳过对操作的所有授权检查,则需要两者。