在我的应用程序中,我有一个 Model
并且正在从与 Geocode 无关的外部 API 中检索每一行的 lat
和 lng
值。此时,我需要 Geocode 的是 .nearbys
方法,它让我可以在默认半径(50 英里)或我指定的范围内找到附近的其他 models
。
通常,您通过添加 geocoded_by :attribute_name
来“激活”Geocode 模型,其中 attribute_name
将在保存对象以获取纬度/经度时由 Geocode 使用坐标。
现在我只是将它添加到我的模型中以使其工作:
geocoded_by :blargh, latitude: :lat, longitude: :lng
def blargh
end
这似乎工作正常。我可以打开我的控制台,实例化一个 Model
,然后调用 model.nearbys
。然而,这似乎有点老套,我想知道是否有比定义一个假方法并将其传递给 geocoded_by
更好的方法。非常感谢您的帮助!
最佳答案
昨天我遇到了同样的问题,即使这是一个老问题我也在这里分享我的解决方案以防其他人需要它。
您可以在需要文件并定义地理编码器选项的模型中直接包含 Geocoder gem(在我的例子中,这些只是我的数据库列上的纬度和经度名称)。
因为我在使用 ActiveRecord 模型,所以我需要:
require "geocoder/stores/active_record"
class User < ActiveRecord::Base
include Geocoder::Store::ActiveRecord
def self.geocoder_options
{ latitude: 'latitude', longitude: 'longitude' }
end
end
我认为这是比使用假地址方法更干净的解决方案。
关于ruby-on-rails - ruby 地理编码 : Make a model 'geocoded' when latitude and longitude already exist from other source?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172516/