如何修改cancan load和授权资源使用不同的id加载资源
How to modify cancan load and authorize resource to load resource using different id
如何修改加载并授权资源使用不同的id加载资源。例如
我的路线是
http://localhost:3000/organization/user/12/event/20/edit
在我的事件控制器中,我使用 :event_id
访问事件,用户使用 :id
现在在我的事件控制器中如何修改 load_and_authorize_resource
使用 :event_id
而不是 :id
来加载事件
资源只有在尚未载入实例变量时才会被载入。这使您可以轻松地覆盖在单独的 before_filter.
中加载的方式。
class EventsController < ApplicationController
before_filter :find_event
load_and_authorize_resource
private
def find_event
@event = Event.find(params[:event_id])
end
end
在文档中阅读更多内容:https://github.com/CanCanCommunity/cancancan/wiki/Authorizing-controller-actions
CanCan 通过 id_param
选项支持这一点:
# [:+id_param+]
# Find using a param key other than :id. For example:
#
# load_resource :id_param => :url # will use find(params[:url])
因此您可以根据自己的情况进行以下操作:
load_and_authorize_resource :id_param => :event_id
如何修改加载并授权资源使用不同的id加载资源。例如
我的路线是
http://localhost:3000/organization/user/12/event/20/edit
在我的事件控制器中,我使用 :event_id
访问事件,用户使用 :id
现在在我的事件控制器中如何修改 load_and_authorize_resource
使用 :event_id
而不是 :id
来加载事件
资源只有在尚未载入实例变量时才会被载入。这使您可以轻松地覆盖在单独的 before_filter.
中加载的方式。class EventsController < ApplicationController
before_filter :find_event
load_and_authorize_resource
private
def find_event
@event = Event.find(params[:event_id])
end
end
在文档中阅读更多内容:https://github.com/CanCanCommunity/cancancan/wiki/Authorizing-controller-actions
CanCan 通过 id_param
选项支持这一点:
# [:+id_param+]
# Find using a param key other than :id. For example:
#
# load_resource :id_param => :url # will use find(params[:url])
因此您可以根据自己的情况进行以下操作:
load_and_authorize_resource :id_param => :event_id