diff --git a/lib/geocoder/stores/active_record.rb b/lib/geocoder/stores/active_record.rb index 38d0abc03f050d0bb08c5ff799e59089c39298f1..7bf07d5e32feeb21dd8be589215e0dc468e46504 100644 --- a/lib/geocoder/stores/active_record.rb +++ b/lib/geocoder/stores/active_record.rb @@ -115,6 +115,13 @@ module Geocoder::Store if options[:units] options[:units] = options[:units].to_sym end + if options[:attrs] + @latitude_attribute = options[:attrs][:latitude] + @longitude_attribute = options[:attrs][:longitude] + else + @latitude_attribute = geocoder_options[:latitude] + @longitude_attribute = geocoder_options[:longitude] + end options[:units] ||= (geocoder_options[:units] || Geocoder.config.units) select_distance = options.fetch(:select_distance, true) options[:order] = "" if !select_distance && !options.include?(:order) @@ -126,8 +133,8 @@ module Geocoder::Store b = Geocoder::Calculations.bounding_box([latitude, longitude], radius, options) args = b + [ - full_column_name(geocoder_options[:latitude]), - full_column_name(geocoder_options[:longitude]) + full_column_name(@latitude_attribute), + full_column_name(@longitude_attribute) ] bounding_box_conditions = Geocoder::Sql.within_bounding_box(*args) @@ -157,8 +164,8 @@ module Geocoder::Store Geocoder::Sql.send( method_prefix + "_distance", latitude, longitude, - full_column_name(geocoder_options[:latitude]), - full_column_name(geocoder_options[:longitude]), + full_column_name(@latitude_attribute || geocoder_options[:latitude]), + full_column_name(@longitude_attribute || geocoder_options[:longitude]), options ) end @@ -176,8 +183,8 @@ module Geocoder::Store Geocoder::Sql.send( method_prefix + "_bearing", latitude, longitude, - full_column_name(geocoder_options[:latitude]), - full_column_name(geocoder_options[:longitude]), + full_column_name(@latitude_attribute), + full_column_name(@longitude_attribute), options ) end