hel*_*ion 1 ruby-on-rails-4 pundit
说我有一个属于用户模型的文档模型。用户has_many文档。DocumentPolicy可能包括此...
def edit?
document.user_id == user.id
end
Run Code Online (Sandbox Code Playgroud)
但是,如果...要编辑文档怎么办,您还必须能够编辑该文档的父级(用户)。然后,该策略可能如下所示。
def edit?
document.user_id == user.id &&
policy(user).edit?
end
Run Code Online (Sandbox Code Playgroud)
这导致错误:
undefined method `policy' for #<DocumentPolicy
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有更好的方法可以做到这一点。我处理不正确吗?似乎其他人会想做的事情……所以,我希望能对其他人如何做到这一点有所了解。
小智 5
您有正确的想法,您只需要通过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
Run Code Online (Sandbox Code Playgroud)
那应该给你你想要的。
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |