我正在创建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。我怎样才能做到这一点?