Я работал с Rails, Active Addmin и cancancan. Все работает нормально, кроме одного. Недавно я добавил отдельные пространства имен для пользователей типа admin и клиентов.
До этого изменения я перенаправлял всех аутентифицированных пользователей на одну и ту же активную панель администратора таким образом (routes.rb):
devise_scope :user do
authenticated :user do
root :to => 'admin/dashboard#index', as: :authenticated_root
end
unauthenticated :user do
root :to => 'pages#index', as: :unauthenticated_root
end
end
В настоящее время мне нужно как-то добавить дополнительное условие, которое будет проверять, есть ли у аутентифицированного пользователя роль admin или client.
Моя идея состояла в том, чтобы сделать что-то вроде этого:
devise_scope :user do
authenticated :user do
if current_user.role?(:Architect) || current_user.role?(:Admin)
root :to => 'admin/dashboard#index', as: :authenticated_root
else
root :to => 'clients/dashboard#index', as: :authenticated_client
end
end
unauthenticated :user do
root :to => 'pages#index', as: :unauthenticated_root
end
end
Но я получаю сообщение об ошибке: неопределенная локальная переменная или метод `current_user' Кто-нибудь знает, как я могу проверить роль пользователя в маршрутах? Есть ли лучший способ сделать это?