Я показываю соответствующие коды Devise timeoutable
User.rb
class User < ApplicationRecord
devise :database_authenticatable, :recoverable, :rememberable, :validatable, :confirmable, :timeoutable
.....
end
и /config/initializers/devise.rb
config.timeout_in = 1.day
Это сработало отлично, недавно я внедрил Rails Action Cable
для некоторых фоновых заданий, например /app/channels/application_cable/connection.rb
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
logger.add_tags "ActionCable", current_user.email
end
private
def find_verified_user
current_user = env['warden'].user
if current_user
current_user
else
reject_unauthorized_connection
end
end
end
end
метод отписки
def unsubscribed
# Any cleanup needed when channel is unsubscribed
$redis.del "user_#{ current_user.id }_online"
ActionCable.server.broadcast 'online_indicator', userId: current_user.id, online: false
end
и после этого Rails автоматически уничтожил сессию после того, как иногда неактивный пользователь, я имею в виду, вышел из системы.
Я не знаю, что происходит с этим кодом.
Может кто-нибудь выяснить, что это, пожалуйста?
Спасибо