将 Pundit 用于 Rails 5 使用两个不同的用户表(用户和管理员)进行授权
Using Pundit for Rails 5 Authorization with two different user tables (User and Admin)
如果在博客应用程序中使用 Pundit 进行授权,为用户和管理员设计具有不同用户表的身份验证,如何在以下位置实施帖子策略:
- 用户可以更新自己的 post
- 管理员可以更新任何人的 post
我在网上看到的例子中,似乎没有规定处理多个用户表,例如Admin和User。
拥有特定于各自表的 UserPolicy 和 AdminPolicy 很简单,但是 PostPolicy 如何实现类似以下的功能:
def initialize(COULD BE A USER OR ADMIN, scope)
@user = USER OR ADMIN
@scope = scope
end
def update?
return true if user is either resource.user or ANY ADMIN
end
因为他们在不同的表中,我假设User和Admin也在不同的类中,你可以使用is_a?
来检查。
def update?
@user == resource.user || @user.is_a?(Admin)
end
如果在博客应用程序中使用 Pundit 进行授权,为用户和管理员设计具有不同用户表的身份验证,如何在以下位置实施帖子策略:
- 用户可以更新自己的 post
- 管理员可以更新任何人的 post
我在网上看到的例子中,似乎没有规定处理多个用户表,例如Admin和User。
拥有特定于各自表的 UserPolicy 和 AdminPolicy 很简单,但是 PostPolicy 如何实现类似以下的功能:
def initialize(COULD BE A USER OR ADMIN, scope)
@user = USER OR ADMIN
@scope = scope
end
def update?
return true if user is either resource.user or ANY ADMIN
end
因为他们在不同的表中,我假设User和Admin也在不同的类中,你可以使用is_a?
来检查。
def update?
@user == resource.user || @user.is_a?(Admin)
end