我有一定数量的用户没有纬度或经度。添加gem之后,我想通过这样做预处理纬度和经度字段:
User.all.each do |user|
geo_data = Gmaps4rails.geocode(user.gmaps4rails_address)
user.update_attributes(latitude: geo_data[0][:lat], longitude: geo_data[0][:lng])
sleep(1)
end
但是在这样做的时候,有时候,当我的地址出错时,我会收到这样的信息:
The address you passed seems invalid, status was: ZERO_RESULTS.
Request was: http://maps.googleapis.com/maps/api/geocode/json?language=en&address=asdasdsa, mountain, US&sensor=false
这让我的佣金破了,所以我想知道我怎样才能为那些正确的地址设置纬度和经度,然后忽略(不设置lat / long)那些返回上述错误的地址?
编辑:
我试过这样做:
User.all.each do |user|
begin
geo_data = Gmaps4rails.geocode(user.gmaps4rails_address)
rescue
next
end
user.update_attributes(latitude: geo_data[0][:lat], longitude: geo_data[0][:lng])
sleep(1)
end
但没有运气。我无法捕获异常并转到循环中的下一个。 感谢
答案 0 :(得分:0)
尝试:
User.find_each do |user|
begin
geo_data = Gmaps4rails.geocode(user.gmaps4rails_address)
user.update_attributes(latitude: geo_data[0][:lat], longitude: geo_data[0][:lng])
sleep(1)
rescue
#just prevent loop from crash
end
end