在某些情况下跳过地理编码

时间:2014-06-25 12:55:34

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

我正在使用Geocode gem来将地址转换为(logitude,latitude)坐标。为此,我在地理编码的用户个人资料模型中添加了这个:

geocoded_by :address

after_validation :geocode, if: Proc.new { |p| p.address_changed? }

这很好用,但现在,我正在制作一个迁移脚本,用地址填充“个人档案”表,还有经度和纬度。在这种情况下,地理编码器仍在进行转换,我多次收到以下警告:

Google Geocoding API error: over query limit.

在某些情况下如何跳过地理编码,例如在已有坐标的情况下迁移?

2 个答案:

答案 0 :(得分:0)

config/initializers/geocoder.rb中输入以下代码:

Geocoder::Configuration.lookup = :yandex

for update to quota: 25000 requests / day

更多详情here

答案 1 :(得分:0)

正确答案取决于您实施address_changed?的方式。

推荐的是:

after_validation :geocode, if: ->(obj){ obj.address.present? and obj.address_changed? }

但我倾向于使用:

after_validation :geocode, if: ->(obj){ obj.address.present? and !obj.address.latitude? and !obj.address.longitude? }

在这种情况下,如果已经设置latitude,longitude对,您将跳过地理编码。