![](/img/trans.png)
[英]how can I read instance variable in rails controller action to pundit policy
[英]How do I authorize a controller action with Pundit if authorization depends on an instance variable?
我的wedding
課上有很多organizers
,並且資源是嵌套的,因此,要查看活動的組織者,我必須訪問: /events/23/organizers
組織者的索引控制器如下所示:
Class OrganizersController < ApplicationController
def index
@wedding = Wedding.find(params[:wedding_id]
@organizers = Organizer.where(wedding: @wedding)
end
end
麻煩的是,僅當實例中的@wedding
為@wedding.organizers.find(user: current_user).present?
,我如何才能讓pundit授權OrganizersController的索引操作@wedding.organizers.find(user: current_user).present?
?
它們是兩個完全不同的模型,一個模型的授權取決於另一個模型。
我假設一個Organizer
屬於Wedding
在這種情況下,您應該有@organizers = @wedding.organizers
。
但是,要回答有關專家授權的問題,應查看scopes
。 在這里,您可以作為組織者返回當前用戶所屬的婚禮。
您還應該與當前用戶有很多婚禮作為組織者的關系。 所以,你必須像current_user.weddings
因為用戶通過擁有眾多的婚禮organizer
。
我最接近的答案是這個 。
我通常的做法是添加一個
list_organizers?
制定婚禮政策,然后:authorize(@wedding, :list_organizers?)
雖然不是很優雅。
如果您找到了一種更好的方法,請回答,我會接受它作為更好的方法。
您可以在組織控制器的索引操作中添加authorize @wedding
嗎? 猜測您的身份驗證,已經設置了檢查用戶是否應該訪問婚禮的權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.