module SessionIdentification
Constants
- MINUTE_THRESHOLD
Public Class Methods
execute(identified_user)
click to toggle source
Your code goes hereā¦
# File lib/log_analysis/session_identification.rb, line 10 def self.execute(identified_user) identified_user.each_with_object([]) do |user, arr| isession = arr.rindex { |s| s.user == user } user.records.each do |record| isession.present? && validate_time_session(arr[isession].records.last.time, record.time) ? arr[isession].records << record : arr << SessionIdentity.new(session_identity_params(record)) end end end
Private Class Methods
session_identity_params(record)
click to toggle source
# File lib/log_analysis/session_identification.rb, line 21 def self.session_identity_params(record) {}.tap do |p| p[:user] = record.user p[:records] = [record] end end
validate_time_session(last_session_record_time, time)
click to toggle source
# File lib/log_analysis/session_identification.rb, line 28 def self.validate_time_session(last_session_record_time, time) (time - last_session_record_time) / 60 < MINUTE_THRESHOLD end