Skip to Content Skip to Search
Methods
C
F
L
N
S
T
Z

Attributes

[R] geodata
[R] ip

Class Public methods

for(ip)

# File app/models/concerns/analytics/locationable.rb, line 13
def self.for(ip)
  new(ip).to_h
end

new(ip)

# File app/models/concerns/analytics/locationable.rb, line 19
def initialize(ip)
  @ip = ip
  @geodata = geocode_ip || {}
end

Instance Public methods

city()

# File app/models/concerns/analytics/locationable.rb, line 28
def city
  geodata.dig("city", "names", "en")
end

country()

# File app/models/concerns/analytics/locationable.rb, line 40
def country
  geodata.dig("country", "iso_code")
end

latitude()

# File app/models/concerns/analytics/locationable.rb, line 44
def latitude
  geodata.dig("location", "latitude")
end

longitude()

# File app/models/concerns/analytics/locationable.rb, line 48
def longitude
  geodata.dig("location", "longitude")
end

state()

# File app/models/concerns/analytics/locationable.rb, line 32
def state
  geodata.fetch("subdivisions", []).first&.dig("iso_code")
end

to_h()

# File app/models/concerns/analytics/locationable.rb, line 24
def to_h
  {city:, state:, zip:, country:, latitude:, longitude:}.compact
end

zip()

# File app/models/concerns/analytics/locationable.rb, line 36
def zip
  geodata.dig("postal", "code")
end