如何修改加载并授权资源以使用不同的 id 加载资源。例如。
我的路线是
http://localhost:3000/organization/user/12/event/20/edit
在我的事件控制器中,我正在访问事件使用:event_id
和用户使用:id
现在在我的事件控制器中,如何修改load_and_authorize_resource
使用:event_id
而不是: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