我有一个wedding
课程,其中包含许多organizers
,并且资源已嵌套,因此,要查看活动的组织者,我必须访问:/events/23/organizers
组织者的索引控制器是这样的:
Class OrganizersController < ApplicationController
def index
@wedding = Wedding.find(params[:wedding_id]
@organizers = Organizer.where(wedding: @wedding)
end
end
麻烦的是,我如何允许权威人员为OrganizersController授权索引操作,并且只有在实例中@wedding
{@ 1}}时才会这样做?
他们是两个完全不同的模型,一个人的授权取决于其他模式。
答案 0 :(得分:0)
我假设Organizer
属于Wedding
,在这种情况下您应该@organizers = @wedding.organizers
。
但是,要回答关于权威授权的问题,您应该查看scopes
。从这里,您可以返回当前用户所属的婚礼作为组织者。
您还应该将当前有许多婚礼用户的关系作为组织者。所以,你会有类似current_user.weddings
的东西,因为用户通过organizer
举办了许多婚礼。
答案 1 :(得分:0)
最近我得到的答案是this。
我通常这样做的方法是添加一个
list_organizers?
谓词 婚礼政策然后:authorize(@wedding, :list_organizers?)
虽然它并不是非常优雅。
如果您找到更好的方法,请回答,我会接受它作为更好的方法。
答案 2 :(得分:-1)
您可以在组织控制器的索引操作中添加 authorize @wedding
吗?猜测您的身份验证已经设置,以检查用户是否应该有权参加婚礼。