Geocoder使用Rails控制台强制对数据库中的记录进行地理编码

时间:2013-02-22 16:39:53

标签: ruby-on-rails rails-activerecord rails-geocoder

我的数据库中有一个地址表已经有一段时间了,最​​近又遇到了Geocoder宝石(甜蜜的宝石)。无论如何,我已经编辑了我的模型以包括纬度和经度列,以及指定每条记录应该是geocoded_by,所以现在我想简单地对表格中的所有地址进行地理编码目前只有零纬度和经度。

我以为我已经通过rails控制台找到了它,只需运行命令:

    Address.all.each{ |address| address.geocode }

这将返回每个带有填充纬度和经度列的条目,但是在检查之后的各个元素时 - 它们仍然具有零纬度和经度(即记录实际上没有被更新)。我想也许address.geocode!可行,但返回了NoMethodError

这必须是一个简单的,但似乎我只是缺乏经验,不知道它是什么... aaaand更多的修补我想通了:

解决方案

    Address.all.each{ |address| address.update_attributes(latitude: address.geocode[0], longitude: address.geocode[1]) }

1 个答案:

答案 0 :(得分:5)

简单地执行

    Address.all.each{ |address| address.geocode }

实际上不会更改数据库中的记录。

<强>解决方案

需要使用update_attributes

    Address.all.each{ |address| address.update_attributes(latitude: address.geocode[0], longitude: address.geocode[1]) }

Geocoder中可能有更快的解决方案,但这是解决问题的快速解决方案,希望它可以帮助其他人!