Class: Skadi::Visit
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Skadi::Visit
- Defined in:
- app/models/skadi/visit.rb
Class Method Summary collapse
- .build_from(tracking_token, user_id = nil, request = nil, cookies_enabled: nil) ⇒ Skadi::Visit
- .find_active_visit_for(tracking_token, user) ⇒ Object
Instance Method Summary collapse
Class Method Details
.build_from(tracking_token, user_id = nil, request = nil, cookies_enabled: nil) ⇒ Skadi::Visit
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/models/skadi/visit.rb', line 35 def self.build_from(tracking_token, user_id = nil, request = nil, cookies_enabled: nil) if .nil? = request&.&.key?("skadi_id") || false end new( visit_token: SecureRandom.uuid_v7, tracking_token: tracking_token, user_id: user_id, referrer: request ? Skadi::Url.redact_and_normalise_url(request.referrer) : nil, landing_page: request ? Skadi::Url.view_path_from_request(request) : nil, utm_source: request ? request.query_parameters["utm_source"] : nil, utm_medium: request ? request.query_parameters["utm_medium"] : nil, utm_term: request ? request.query_parameters["utm_term"] : nil, utm_content: request ? request.query_parameters["utm_content"] : nil, utm_campaign: request ? request.query_parameters["utm_campaign"] : nil, verified: false, cookies_enabled: , ) end |
.find_active_visit_for(tracking_token, user) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/models/skadi/visit.rb', line 8 def self.find_active_visit_for(tracking_token, user) return nil if tracking_token.nil? && user.nil? visit_query = nil if tracking_token visit_query = where(tracking_token: tracking_token) .and(where("created_at > ?", Skadi.configuration.visit_duration.ago)) end if user&.persisted? user_visit_query = where(user_id: user.id) .and(where("created_at > ?", Skadi.configuration.visit_duration.ago)) visit_query = visit_query ? visit_query.or(user_visit_query) : user_visit_query end visit = visit_query&.order(created_at: :desc)&.limit(1)&.first # If the user has changed since the last visit, create a new visit return nil if visit&.user_id && user&.persisted? && visit.user_id != user.id visit end |
Instance Method Details
#token ⇒ Object
6 |
# File 'app/models/skadi/visit.rb', line 6 def token = visit_token |