将 Pundit for Rails 5 授权与两个不同的用户表(用户和管理员)一起使用



如果在博客应用程序中使用Pundit进行授权,为用户和管理员设计具有不同用户表的身份验证,如何在以下情况下实施帖子策略:

  • 用户可以更新自己的帖子
  • 管理员可以更新任何人的帖子

在我在网上看到的示例中,似乎没有处理多个用户表(如管理员和用户)的规定。

拥有特定于各自表的用户策略和管理员策略很简单,但是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
因为它们

在不同的表中,我假设用户和管理员也在不同的类中,你可以使用is_a?来检查。

def update?
  @user == resource.user || @user.is_a?(Admin)
end

最新更新