Sha256: 84007823106fc39bb2fddfbcd83791931c22fba7d06646eb59c5cafcf2241194
Contents?: true
Size: 1.47 KB
Versions: 1
Compression:
Stored size: 1.47 KB
Contents
module Calagator class Venue < ActiveRecord::Base class Geocoder < Struct.new(:venue) cattr_accessor(:perform_geocoding) { true } def self.geocode(venue) new(venue).geocode end def geocode return unless should_geocode? map_geo_to_venue if geo.success log end private def geo @geo ||= Geokit::Geocoders::MultiGeocoder.geocode(venue.geocode_address) end VENUE_GEO_FIELD_MAP = { street_address: :street_address, locality: :city, region: :state, postal_code: :zip, country: :country_code }.freeze def map_geo_to_venue # always overwrite lat and long venue.latitude = geo.lat venue.longitude = geo.lng VENUE_GEO_FIELD_MAP.each do |venue_field, geo_field| next if venue[venue_field].present? venue[venue_field] = geo.send(geo_field) end end def should_geocode? [ perform_geocoding, (venue.location.blank? || venue.force_geocoding == '1'), venue.geocode_address.present?, venue.duplicate_of.blank? ].all? end def log venue_id = venue.new_record? ? 'new record' : "record #{venue.id}" status = geo.success ? 'was successful' : 'failed' message = "Venue#add_geocoding for #{venue} #{status}, response was: #{geo.inspect}" Rails.logger.info message end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
calagator-1.1.0 | app/models/calagator/venue/geocoder.rb |