说我有一个属于用户模型的文档模型。用户has_many文档。 DocumentPolicy可能包括...
def edit?
document.user_id == user.id
end
但是,如果...要编辑文档怎么办,您还必须能够编辑该文档的父级(用户)。然后,该策略可能如下所示。
def edit?
document.user_id == user.id &&
policy(user).edit?
end
这导致错误:
undefined method `policy' for #<DocumentPolicy
我很好奇是否有更好的方法可以做到这一点。我处理不正确吗?似乎其他人会想做的事情...所以,我希望能深入了解其他人是如何做到这一点的。
最佳答案
您有正确的想法,只需要通过pundit类明确地调用它:
def edit?
# I am assuming that a user can edit themselves, so the "or" is in there, if not, go back to using and
document.user_id == user.id or UserPolicy.new(user, User.find(document.user_id)).edit?
end
那应该给你你想要的。
关于ruby-on-rails-4 - 嵌套的Pundit政策?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26514769/