Files
openfoodnetwork/app/services/address_geocoder.rb
2023-09-14 16:25:49 +09:00

35 lines
596 B
Ruby

# frozen_string_literal: true
class AddressGeocoder
def initialize(address)
@address = address
end
def geocode
latitude, longitude = Geocoder.coordinates(geocode_address)
return unless latitude.present? && longitude.present?
address.update(latitude:, longitude:)
end
private
attr_reader :address
def geocode_address
address_parts.select(&:present?).join(', ')
end
def address_parts
[
address.address1,
address.address2,
address.zipcode,
address.city,
address.country&.name,
address.state&.name
]
end
end