Ruby on rails Rails-Geocoder Gem:使用2个表对_进行地理编码

Ruby on rails Rails-Geocoder Gem:使用2个表对_进行地理编码,ruby-on-rails,rails-geocoder,Ruby On Rails,Rails Geocoder,我习惯于用我在中看到的方式使用geocoder gem,但是我的模型比给出的示例要复杂一些 现在,我想使用两种型号: -“城市”,具有“名称”属性 和 -“位置”,具有“纬度”、“经度”和“城市id”属性 这样,该位置将具有默认的纬度和经度值,稍后,我们可以对其进行精确定位 问题是,在位置模型中,如何在城市模型中通过名称指定位置的地理编码 我在找一些简单的东西,比如: geocoded_by :city, :name 或 谢谢你的帮助 编辑: 以下是当前的型号: class Location&

我习惯于用我在中看到的方式使用geocoder gem,但是我的模型比给出的示例要复杂一些

现在,我想使用两种型号:
-“城市”,具有“名称”属性

-“位置”,具有“纬度”、“经度”和“城市id”属性

这样,该位置将具有默认的纬度和经度值,稍后,我们可以对其进行精确定位

问题是,在位置模型中,如何在城市模型中通过名称指定位置的地理编码

我在找一些简单的东西,比如:

geocoded_by :city, :name

谢谢你的帮助

编辑: 以下是当前的型号:

class Location< ActiveRecord::Base
  attr_accessible :city_id, :latitude, :longitude
  belongs_to :city
  geocoded_by ??? (how to specify the city.name value ?)
  after_validation :geocode  
end

class City < ActiveRecord::Base
  attr_accessible :name
  has_many :locations
end
类位置
您需要在两个模型之间建立一个有许多关联的


本指南向您展示了如何操作:

不确定它是否有效,但您可以尝试:

geocoded_by lambda{ |obj| obj.city.name }
或者,如果上述方法不起作用:

geocoded_by :city_name

def city_name
  self.city.name
end

实际上,这已经是这样做的:每个位置都属于:城市,每个城市都有许多:位置我试图回答你的问题,但是如果你是按城市名称进行地理编码,那么lat和lon不应该存储在cities表中吗?我的意思是,一个城市的所有地点都将具有相同的纬度/经度。您最好将其存储在cities表中,而不是存储在locations表中。谢谢。“self.city.name对_进行地理编码”不起作用,但使用私有方法,效果很好。
geocoded_by :city_name

def city_name
  self.city.name
end