Хорошо, я не уверен, сколько вы знаете о отложенной работе, поэтому я начну с нее.
Задержанное задание может использовать любой класс, который отвечает на "#perform", поэтому первое, что вам нужно, это класс для получения координат и их сохранения в вашей модели.
class GoogleMapsCoordinateService
def perform(record)
coords = Gmaps4rails.geocode(record.address) #This is the method that will actually return a hash of coordinates for each match it finds.
record.update_attributes(:lattitude => coords[0][:lat], :longitude => coords[0][:lng])
end
end
Тогда вам просто нужно поставить эту задачу в ловушку after_create в модели
class INSERTYOURMODELNAMEHERE < ActiveRecord::Base
after_create :get_coordinates
def get_coordinates
Delayed::Job.enqueue GoogleMapsCoordinateService.new(self)
end
end
Таким образом, после создания каждой записи вы поставите в очередь захват координат на заднем плане, сохраняя при этом время отклика.