From 83cbf1b889275f541ce0a41ccdb013d867090470 Mon Sep 17 00:00:00 2001
From: Shelby Switzer <shelby@voterheads.com>
Date: Sat, 2 Aug 2014 16:52:19 -0400
Subject: [PATCH] add optional attributes argument for AR base query

---
 lib/geocoder/stores/active_record.rb | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/lib/geocoder/stores/active_record.rb b/lib/geocoder/stores/active_record.rb
index 38d0abc0..7bf07d5e 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
-- 
GitLab