Я работаю над приложением каталога библиотеки, которое аутентифицирует администраторов и пользователей.Почему-то я не могу установить after_sign_in_path_for
, так как вход в систему теперь направляется к общедоступному корню, а не к корню каждого пространства имен.
Я уже внедрил пространство имен администратора и аутентификацию администратора, и все работало.Чтобы настроить путь выхода из системы, я добавил:
# Overwriting the sign_out redirect path method
def after_sign_out_path_for(resource_or_scope)
if resource_or_scope == :user
collection_path
elsif resource_or_scope == :admin
new_admin_session_path
else
root_path
end
end
Я уже включил область действия пользователя в этот раздел, даже если я еще не реализовал ресурс.Все работало.
Теперь я хочу добавить пользовательский ресурс и пространство имен коллекции, где размещен каталог.Так как теперь мне нужно указать перенаправление after sign_in, я заполнил application_controller.rb:
# Overwriting the sign_in redirect path method
def after_sign_in_path_for(resource_or_scope)
if resource_or_scope == :user
collection_opac_path
elsif resource_or_scope == :admin
admin_root_path
else
root_path
end
end
Каким-то образом я теперь перенаправлен в основной корень вместо collection_opac_path
или admin_root_path
.Последний работал до определения after_sign_in_path.
В моем route.rb у меня есть следующие записи:
devise_for :users
devise_for :admins
namespace :collection do
match '/', :to => 'opac#home'
match '/opac', :to => 'opac#opac', :as => :opac
root :to => 'opac#home'
end
namespace :admin do
...
root :to => 'pages#pageadmin'
end
root :to => 'pages#manifesto'
Администратор аутентифицирован на всех контроллерах пространства имен администратора.Пользователь проходит проверку подлинности при действии opac контроллера opac в пространстве имен коллекции.
rake routes
дает:
collection /collection(.:format) collection/opac#home
collection_opac /collection/opac(.:format) collection/opac#opac
collection_root /collection(.:format) collection/opac#home
admin_root /admin(.:format) admin/pages#pageadmin
root / pages#manifesto
Что я делаю неправильно?Как мне заставить это работать?
Заранее спасибо!
Обновление
Я думаю, что важно указать, что форма входа пользователя размещается в представлении коллекции / дома и после отправки и входа в систему должна перенаправлять в коллекцию / opac, а форма входа администраторапоявляется при попытке доступа к корню пространства имен администратора.