2017-01-23 15 views
0

Если вы используете Pundit для авторизации в приложении Blog, разработайте для проверки подлинности с различными пользовательскими таблицами для пользователя и администратора, как можно реализовать политику для сообщений, где :Использование Pundit for Rails 5 Авторизация с использованием двух разных пользовательских таблиц (User and Admin)

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

в примерах, которые я видел в Интернете, не кажется, что будет положение для обработки нескольких пользовательских таблиц такие как администратор и пользователь.

Имея 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

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

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