HABTM rails 关系中的 Pundit 范围
Pundit scope in HABTM rails relation
我当前的索引操作如下所示:
def index
@proposals = current_user.proposals
end
但我想这样做:
def index
@proposals = policy_scope(Proposal)
end
我在 User
和 Proposal
之间有一个 has_and_belongs_to
关系。
我开始在我的应用程序中使用 Pundit
gem,但我不知道如何定义范围以使普通用户具有上面显示的行为。
我想做这样的事情:
class Scope < Scope
def resolve
if user.admin?
scope.all
else
user.proposals # HOW DO I DO THIS WITH THE SCOPE?
end
end
end
如何使用范围变量获取 user.proposals
?
我知道如果我有 has_many
和 belongs_to
关系,我可以做类似的事情:
else
scope.where(user_id: user.id) # RIGHT?
end
但是在 HABTM 的情况下,我不知道该怎么做。
有什么帮助吗?
您可以使用 joins
获取与用户相关的提案。像这样:
def resolve
if user.admin?
scope.all
else
scope.joins(:users).where(proposals_users: { user_id: user.id })
end
end
我当前的索引操作如下所示:
def index
@proposals = current_user.proposals
end
但我想这样做:
def index
@proposals = policy_scope(Proposal)
end
我在 User
和 Proposal
之间有一个 has_and_belongs_to
关系。
我开始在我的应用程序中使用 Pundit
gem,但我不知道如何定义范围以使普通用户具有上面显示的行为。
我想做这样的事情:
class Scope < Scope
def resolve
if user.admin?
scope.all
else
user.proposals # HOW DO I DO THIS WITH THE SCOPE?
end
end
end
如何使用范围变量获取 user.proposals
?
我知道如果我有 has_many
和 belongs_to
关系,我可以做类似的事情:
else
scope.where(user_id: user.id) # RIGHT?
end
但是在 HABTM 的情况下,我不知道该怎么做。
有什么帮助吗?
您可以使用 joins
获取与用户相关的提案。像这样:
def resolve
if user.admin?
scope.all
else
scope.joins(:users).where(proposals_users: { user_id: user.id })
end
end