这是我的问题。我有多个用户,每个用户都有多个订阅,我想用Pundit授权订阅索引方法。 我的 routes.rb :
resources :users do resources : subscriptions end
假设我是id 1 的用户。我需要的是在我打开/users/1/subscriptions
时获取订阅列表,当我打开/user/2/subscriptions
这是我的subscriptions_controller.rb
SubscriptionController < ApplicationController def index @user = User.find(params[:user_id]) @subscriptions = @user.subscriptions authorize @subscriptions end end
我可以authorize @user, :subscriptions_index
,但为订阅身份验证编写用户策略感觉不对。我该如何处理这个问题?提前谢谢。
答案 0 :(得分:0)
这应该适合你(可能不是最有效的):
class SubscriptionController < ApplicationController
def index
@user = User.find(params[:user_id])
# this should either return the same or an empty association
@subscriptions = @user.subscriptions
authorize @subscriptions
end
end
class SubscriptionPolicy < ApplicationPolicy
def index?
# asking if all subscriptions have the current_user id as the user_id
record.all? {|sub| sub.user_id == user.id }
end
end