首页 > 解决方案 > “用户最后一次在线”在

问题描述

是否有任何简单/原生的方式来显示用户上次在线时使用标准 Rails 应用程序在他们的个人资料页面上使用设备进行身份验证的时间?

我能得到的最接近的是

<%= @user.current_sign_in_at.to_s %>

这显示了最后一次登录发生的时间(这可能与用户最后一次检查网站的时间有很大不同 - 即他们最后一次“在线”可以这么说)。例如,如果用户在过去 90 秒内的任何时间都在使用该网站,我想显示一点绿灯,但如果使用他们上次登录的时间,那将不准确。

标签: ruby-on-railsdeviseruby-on-rails-6

解决方案


Add a column in a users table last_seen_at & update it every time using 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

推荐阅读