Вам необходимо написать собственное приложение FailureApp, которое активируется, когда пользователь не прошел проверку подлинности.
С Как: Перенаправить на определенную страницу, когда пользователь не может быть аутентифицирован
class CustomFailure < Devise::FailureApp
def redirect_url
#return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
new_user_session_url(:subdomain => 'secure')
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end
И добавьте следующее в config / initializers / devise.rb:
config.warden do |manager|
manager.failure_app = CustomFailure
end
Если вы получаете неинициализированную постоянную ошибку CustomFailure и поместили класс CustomFailure в каталог / lib, обязательно загрузите ваши файлы lib в файле application.rb, как показано ниже
config.autoload_paths += %W(#{config.root}/lib)