如何将地理编码器数据存储在单独的表中?

时间:2013-05-06 15:07:17

标签: ruby-on-rails ruby-on-rails-3 geolocation rails-geocoder

我的应用有PhotosLocations

class Photo < ActiveRecord::Base
  belongs_to :location
end

class Location < ActiveRecord::Base
  has_many :photos
end

我要做的是使用:address字段自动地(使用geoocoder gem)照片进行地理定位,但我想将地理位置数据存储在locations表格中。

通过关注这个gem的github页面的教程,我能够将这些数据存储在Photos表中而没有任何复杂性,但我甚至无法想象如何将这个自动地理定位魔法移动到相关表格。

更重要的是,它会非常棒,如果它像标记一样工作 - 如果提供的地址已经在locations表中,脚本应该将它与新的/更新的照片相关联。但是如果db中没有这样的地址,它应该创建一个新的位置记录。

通常情况下,我会通过手动地使用before_save回调对照片进行地理编码来100%手动完成,但我觉得这是一个非常脏的解决方案,我相信有一个我不知道的解决方案。

1 个答案:

答案 0 :(得分:0)

您是否看过文档的Advanced GeoCoding部分?

我正在使用MongoDB,这就是我一直在做的事情。

#set up my relationship
embeds_one :address_info

#assign the address_data hash to my embedded document
reverse_geocoded_by :coordinates do |obj,result|
  if obj = result.first
    obj.address_info = result.address_data
  end
end

您可以看到地理编码器result here

中的内容