Rails - Geocoder Gem:geocoded_by有2个表格

时间:2012-10-21 10:10:13

标签: ruby-on-rails rails-geocoder

我习惯按照http://railscasts.com/episodes/273-geocoder中的方式使用地理编码器宝石,但我的模型变得比给定的例子更复杂。

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

- “位置”,具有“纬度”,“经度”和“city_id”属性

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

问题是,在位置模型中,如何通过City模型中的名称指定地理位置?

我一直在寻找简单的东西:

geocoded_by :city, :name

geocoded_by self.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

2 个答案:

答案 0 :(得分:2)

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

geocoded_by lambda{ |obj| obj.city.name }

或者,如果以上情况不起作用:

geocoded_by :city_name

def city_name
  self.city.name
end

答案 1 :(得分:0)

您需要在两个模型之间设置has_many关联。

本指南说明如何:http://guides.rubyonrails.org/association_basics.html