我正在使用Geocode gem来将地址转换为(logitude,latitude)坐标。为此,我在地理编码的用户个人资料模型中添加了这个:
geocoded_by :address
after_validation :geocode, if: Proc.new { |p| p.address_changed? }
这很好用,但现在,我正在制作一个迁移脚本,用地址填充“个人档案”表,还有经度和纬度。在这种情况下,地理编码器仍在进行转换,我多次收到以下警告:
Google Geocoding API error: over query limit.
在某些情况下如何跳过地理编码,例如在已有坐标的情况下迁移?
答案 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
对,您将跳过地理编码。