27 lines
757 B
Ruby
27 lines
757 B
Ruby
class UserVisitContext < ApplicationRecord
|
|
belongs_to :user
|
|
has_many :ahoy_visits, class_name: "Ahoy::Visit", dependent: :nullify
|
|
|
|
after_create :set_user_language
|
|
|
|
def set_user_language
|
|
# When we detect a new user context, we automatically
|
|
# add languages with a weight of greater than 0.7
|
|
languages = accept_language.split(",")
|
|
|
|
languages.map! do |lang|
|
|
lang, q = lang.split(";q=")
|
|
[lang[0..1], (q || "1").to_f]
|
|
end
|
|
|
|
filtered_languages = languages
|
|
.select { |_, q| q >= 0.7 }
|
|
.uniq { |lang, _| lang }
|
|
|
|
filtered_languages.map(&:first).each do |lang|
|
|
UserLanguage.where(user_id: user_id, language: lang).first_or_create
|
|
end
|
|
rescue StandardError => e
|
|
Rails.logger.error(e)
|
|
end
|
|
end
|