«Последний пользователь в Сети» при использования devise?

#ruby-on-rails #devise #ruby-on-rails-6

#ruby-on-rails #разработка #ruby-on-rails-6

Вопрос:

Есть ли какой-либо простой / собственный способ отображения того, когда пользователь был в сети в последний раз на странице своего профиля, используя стандартное приложение rails, использующее devise для аутентификации?

Самое близкое, что я могу получить, это

 <%= @user.current_sign_in_at.to_s %>
  

Это показывает, когда в последний раз происходил вход (который может значительно отличаться от последнего раза, когда пользователь проверял сайт, т. Е. Когда он в последний раз был, так сказать, «онлайн»). Например, я хотел бы показать небольшой зеленый свет, если пользователь использовал сайт в любое время в течение последних 90 секунд, но это будет неточно, если использовать время их последнего входа в систему.

Ответ №1:

Добавьте столбец в таблицу пользователей last_seen_at и обновляйте его каждый раз, используя touch.

 class ApplicationController
  before_action :record_last_seen_at

  private

  def record_last_seen_at
    if current_user
      current_user.touch :last_seen_at
    end
  end
end