0
我已经从CSV文件导入了一堆位置,现在我需要让它们进行地理编码。当我手动创建新记录时,我会在验证后运行:geocode
。我希望能够立即在所有记录上运行它。使用轨道控制台中的方法更新所有记录
我已经看过update_all
,但一直未能得到它的工作。有没有办法做到这一点?
这里是我的模型:
class Location < ActiveRecord::Base
include Rails.application.routes.url_helpers
default_scope order('locations.name ASC')
acts_as_gmappable
attr_accessible :name,
:address,
:city,
:province,
:postal_code,
:country,
:phone,
:ext,
:phone_alt,
:ext_alt,
:url,
:latitude,
:longitude
geocoded_by :address
validates_presence_of :name
validates_presence_of :address
validates_presence_of :city
validates_presence_of :province
validates_presence_of :postal_code
validates_presence_of :country
after_validation :geocode
def gmaps4rails_address
"#{self.address} #{self.city} #{self.province} #{self.postal_code} #{self.country}"
end
end
这是一种工作,但我觉得,因为它是在一个循环的API被踢了很多人的回应。有没有办法在每个之间添加延迟? –
你是什么意思,踢他们回来?如果您只想减慢循环,则可以在每次地理编码请求后添加一次睡眠(5次)。如果逻辑涉及更多 - 如果在发生故障时需要进行某种跟进,我会建议将其重构为自定义rake任务:http://railscasts.com/episodes/66-custom-耙 - 任务 – pseudopeach
是的,正是我所需要的,再次感谢! –