From 7f58407e5296ffb1ad1fac14e4fdb494fdea70b8 Mon Sep 17 00:00:00 2001
From: Alex Reisner <alex@alexreisner.com>
Date: Mon, 21 Jun 2010 11:41:20 -0400
Subject: [PATCH] Add :select option to approx_near_scope_options.

This option is not recommended but it must be available for consistency.
The API should support the same options regardless of the algorithm used
for finding nearby objects.

Also move shared :conditions to default_near_scope_options.
---
 lib/geocoder.rb | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/lib/geocoder.rb b/lib/geocoder.rb
index 9e4fe686..9222b1da 100644
--- a/lib/geocoder.rb
+++ b/lib/geocoder.rb
@@ -84,9 +84,6 @@ module Geocoder
         "PI() / 180 / 2), 2) ))"
       default_near_scope_options(latitude, longitude, radius, options).merge(
         :select => "#{options[:select] || '*'}, #{distance} AS distance",
-        :conditions => \
-          ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
-          coordinate_bounds(latitude, longitude, radius),
         :having => "#{distance} <= #{radius}"
       )
     end
@@ -98,12 +95,8 @@ module Geocoder
     # objects outside the given radius).
     #
     def approx_near_scope_options(latitude, longitude, radius, options)
-      lat_attr = geocoder_options[:latitude]
-      lon_attr = geocoder_options[:longitude]
       default_near_scope_options(latitude, longitude, radius, options).merge(
-        :conditions => \
-          ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
-          coordinate_bounds(latitude, longitude, radius)
+        :select => options[:select] || nil
       )
     end
     
@@ -111,10 +104,15 @@ module Geocoder
     # Options used for any near-like scope.
     #
     def default_near_scope_options(latitude, longitude, radius, options)
+      lat_attr = geocoder_options[:latitude]
+      lon_attr = geocoder_options[:longitude]
       {
         :order  => options[:order],
         :limit  => options[:limit],
-        :offset => options[:offset]
+        :offset => options[:offset],
+        :conditions => \
+          ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
+          coordinate_bounds(latitude, longitude, radius)
       }
     end
     
-- 
GitLab