如何正确跟踪用户的在线总数

时间:2017-07-17 16:33:43

标签: ruby-on-rails ruby devise

我正在创建rails应用。我添加设计用户列: total_online last_seen 来跟踪他们的在线总时间。

应用程序/模型/ user.rb

class User < ApplicationRecord
  devise :session_limitable, :database_authenticatable, :registerable, :confirmable,
    :recoverable, :rememberable, :trackable, :validatable

  validates :full_name, presence: true
  def active_now!
    if (Time.now - self.last_seen) <= 3.minutes
      self.total_online += (Time.now - self.last_seen)
    end

    self.last_seen = Time.now
    save!
  end
end

应用程序/控制器/ application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  responders :flash
  respond_to :html

  before_action :record_user_activity

  private

  def record_user_activity
    current_user.active_now! if current_user
  end
end

主要想法 - 用户应该在3分钟内对页面执行任何操作,以将此时间保存到total_online。但我有一个视频观看页面,我想计算用户在视频页面上的时间。(当用户观看视频时,他没有做任何动作,所以total_online没有更新)。我猜这个页面上的时间应该是separetely然后添加到total_online。我怎样才能做到这一点?

0 个答案:

没有答案