From d88a46e38508507475830b371352069ce2a98be2 Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Sat, 5 Mar 2011 16:38:09 -0500 Subject: [PATCH] Add obj argument to block taken by geocode method. This fixes a scope problem: blocks are evaluated in the context in which they are declared so custom routines were being evaluated in the context of the class, not the object. --- lib/geocoder/orms/active_record.rb | 10 +++++----- lib/geocoder/orms/base.rb | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/geocoder/orms/active_record.rb b/lib/geocoder/orms/active_record.rb index b1bac032..90e54067 100644 --- a/lib/geocoder/orms/active_record.rb +++ b/lib/geocoder/orms/active_record.rb @@ -149,11 +149,11 @@ module Geocoder::Orm # coordinates as an array: <tt>[lat, lon]</tt>. # def fetch_coordinates(save = false) - geocode do |r| + geocode do |o,r| unless r.latitude.nil? or r.longitude.nil? method = (save ? "update" : "write") + "_attribute" - send method, self.class.geocoder_options[:latitude], r.latitude - send method, self.class.geocoder_options[:longitude], r.longitude + o.send method, self.class.geocoder_options[:latitude], r.latitude + o.send method, self.class.geocoder_options[:longitude], r.longitude end r.coordinates end @@ -171,10 +171,10 @@ module Geocoder::Orm # address as a string. # def fetch_address(save = false) - geocode do |r| + geocode do |o,r| unless r.address.nil? method = (save ? "update" : "write") + "_attribute" - send method, self.class.geocoder_options[:fetched_address], r.address + o.send method, self.class.geocoder_options[:fetched_address], r.address end r.address end diff --git a/lib/geocoder/orms/base.rb b/lib/geocoder/orms/base.rb index 1edf7e45..dedeefe4 100644 --- a/lib/geocoder/orms/base.rb +++ b/lib/geocoder/orms/base.rb @@ -52,9 +52,9 @@ module Geocoder # passing a block to this method overrides the one given in the model if result = Geocoder.search(*args).first if block_given? - yield(result) + yield(self, result) else - self.class.geocoder_options[:block].call(result) + self.class.geocoder_options[:block].call(self, result) end end end -- GitLab