Использование 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