Использование Pundit для Rails 5 Authorization с двумя разными пользовательскими таблицами (User и Admin)

Если вы используете Pundit для авторизации в приложении блога, разработайте для аутентификации разные таблицы пользователей для пользователей и администраторов, как можно реализовать политику для сообщений, где:

  • Пользователи могут обновлять свои собственные сообщения
  • Администраторы могут обновить любой пост

В примерах, которые я видел в Интернете, похоже, что нет условий для обработки нескольких пользовательских таблиц, таких как 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

1 ответ

Решение

Поскольку они находятся в разных таблицах, я предполагаю, что User и Admin также находятся в разных классах, вы можете просто использовать is_a? Проверять.

def update?
  @user == resource.user || @user.is_a?(Admin)
end
Другие вопросы по тегам