ruby-on-rails - ruby 地理编码 : Make a model 'geocoded' when latitude and longitude already exist from other source?

标签 ruby-on-rails ruby geolocation gem geocode

在我的应用程序中,我有一个 Model 并且正在从与 Geocode 无关的外部 API 中检索每一行的 latlng 值。此时,我需要 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/

相关文章:

ruby-on-rails - 我应该测试模型之间的关联吗?

ruby-on-rails - 使用 Ruby On Rails 在 Controller 中渲染部分

ruby-on-rails - 如何在哈希中创建哈希

ruby - 与安全导航运算符(&. 或 "ampersand-dot")等价的 pre-Ruby2.3 是什么?

ruby-on-rails - 运行 bundle install 时出现 sqlite3 错误

javascript - getCurrentPosition 落后于 VPN - 为什么?

geolocation - 用户拒绝一次后如何再次询问用户使用地理定位的权限?

ruby-on-rails - 帮助理解多态关联(rails)

ruby - Selenium Ruby - 按类属性切换框架

mysql - 判断一个点是否在区域内