Sha256: 91d8d21b6a1526f06ced0a67f3380fc2589230de1dd28a023f6b5cc23caf0f7a

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require "geocoder/calculations"
require "geocoder/lookup"
require "geocoder/active_record"

##
# Add geocoded_by method to ActiveRecord::Base so Geocoder is accessible.
#
ActiveRecord::Base.class_eval do

  ##
  # Set attribute names and include the Geocoder module.
  #
  def self.geocoded_by(address_attr, options = {})
    _geocoder_init(
      :user_address => address_attr,
      :latitude  => options[:latitude]  || :latitude,
      :longitude => options[:longitude] || :longitude
    )
  end

  ##
  # Set attribute names and include the Geocoder module.
  #
  def self.reverse_geocoded_by(latitude_attr, longitude_attr, options = {})
    _geocoder_init(
      :fetched_address => options[:address] || :address,
      :latitude  => latitude_attr,
      :longitude => longitude_attr
    )
  end

  def self._geocoder_init(options)
    unless _geocoder_initialized?
      class_inheritable_reader :geocoder_options
      class_inheritable_hash_writer :geocoder_options
    end
    self.geocoder_options = options
    unless _geocoder_initialized?
      include Geocoder::ActiveRecord
    end
  end

  def self._geocoder_initialized?
    included_modules.include? Geocoder::ActiveRecord
  end
end


class GeocoderError < StandardError
end

class GeocoderConfigurationError < GeocoderError
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-geocoder-0.9.7 lib/geocoder.rb