1

我的数据库中有一个地址表已经有一段时间了,最​​近遇到了 Geocoder gem(甜蜜的 gem)。无论如何,我已经编辑了我的模型以包含纬度和经度列,并指定每条记录应该是什么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]) }
4

1 回答 1

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 中可能嵌入了更快的解决方案,但这是解决问题的快速解决方案,希望对其他人有所帮助!

于 2013-02-22T16:39:52.633 回答