Devise помнит, как текущий пользователь использует куки-файлы до тех пор, пока они не выйдут из системы.
То, что они попали в ваш маршрут входа, не означает, что они вышли из системы.
Погружение в Devise
Отслеживание кода в Devise для понимания того, что происходит, мы видим:
1. Devise :: SessionsController # create
class Devise::SessionsController < ApplicationController
# ...
def create
# ...
sign_in(resource_name, resource)
# ...
end
end
2. Devise :: Controllers :: Helpers # sign_in
def sign_in(resource_or_scope, *args)
# ...
if options[:bypass]
warden.session_serializer.store(resource, scope)
elsif warden.user(scope) == resource && !options.delete(:force)
# Do nothing. User already signed in and we are not forcing it.
true # <=== Here's the moment of truth
else
# ...
end
Заключение
- Пользователь может нажать на ваш
sessions#create
, когда он ужевошел в систему - В этом случае поведение Devise по умолчанию - ничего не делать
- Не совсем уверен, чего вы хотите достичь выше, но вызов super может пригодиться где-нибудь, чтобы возобновить поведение Devise по умолчанию