Если вы храните пользователей в базе данных каким-либо образом, вы можете сохранить поле last_seen_at
в таблице пользователей и обновить его на Time.now
для каждого AJAX-запроса, который отправляет пользователь.
Чтобы отобразить, сколько у вас пользователей в данный момент, вы можете просто выполнить запрос, например:
@user_count = User.where("last_seen_at < ?", 5.seconds.ago).count
Если вы хотите очистить старых пользователей, я предлагаю запустить какое-то задание cron или использовать гем whenever
, или что-то в этом роде, чтобы периодически удалять всех пользователей, которых не видели в течение некоторого времени. .