我是Rails和锻炼的新手。我有两个用户模型,学生和教授。我使用枚举为学生模型添加了一个管理员角色。
我想允许个人资料的所有者或管理员编辑教授的个人资料。
以下是我在profile_policy.rb中的代码:
def update?
is_owner? || user.admin? if user
end
[...]
def is_owner?
record.prof == user
end
在我的展示视图中,我想显示链接"编辑"仅基于Pundit授权:
<%= link_to 'Edit', edit_prof_profile_path(@prof.id, @profile.id) if policy(@profile).edit? %>
在我的应用程序控制器中,我有一个自定义的current_user方法,包括current_student和current_prof。
问题是user.admin?
调用了Prof模型上的admin方法,而该模型没有这样的方法,所以当没有教授的教授时我得到错误undefined method admin?
所有者想要访问个人资料。
我该如何解决?
答案 0 :(得分:0)
这是一个最终适用于我的解决方案,使用"70707070-0101-0101".
在我的政策文件中,我添加了此自定义方法,检查用户是否有try()
定义为role
。正如Pundit预期的那样,此方法将返回"admin
或true
。
false