【问题标题】:Join between User and Locations table用户和位置表之间的联接
【发布时间】:2014-10-29 01:08:04
【问题描述】:

我在 Users 表中存储了邮政编码,在 Locations 表中我有来自所有 50 个州的 lat、lonzips 数据。

我正在尝试完成这一行:

:geo => [current_user.latitude * Math::PI / 180.0, current_user.longitude * Math::PI / 180.0]

问题是用户仅存储邮政编码。我该如何定义,以便 current_user.latitude 根据当前用户的邮政编码显示纬度?

【问题讨论】:

  • 例如,您可以使用 USPS 数据集,其中包含将地理参考与邮件地址和邮政编码相关联的信息。总的来说,这不是一个简单的计算——它是一个复杂的查找。用于群发邮件测试的邮政数据集信息:usps.com/postalone/testing.htm
  • 这比我想做的要多得多。我只想从当前用户的邮政编码中输出纬度和经度值(存储在 Locations 表中,其中包括带有 lat/lon 的 zip)。我有用户和位置之间的关系,以及导入的数据。 USPS 数据集对这种情况没有帮助。不过谢谢!
  • 可以使用geocoder api获取经纬度。但它必须是一个正确的邮政编码。不像美国这样的国家,如果你输入邮政编码为742,国家为印度,你会得到很多记录。

标签: ruby-on-rails


【解决方案1】:

我对您的locations 表的结构并不完全清楚,但是类似以下的内容呢:

class User < ActiveRecord::Base
  def location
    @location ||= Location.where(zip: zipcode)
  end

  def latitude
    location.lat
  end

  def longitude
    location.lon
  end
end

真正的问题是如何在users 表和locations 表之间构建连接。如果它们每个都有一个包含邮政编码字符串的列,那么它只需要一个简单的where 条件,就像上面User#location 中显示的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多