2

我习惯于按照在http://railscasts.com/episodes/273-geocoder中看到的方式使用地理编码器 gem ,但是我的模型变得比给定的示例更复杂一些。

现在,我想使用 2 个模型:
-“City”,具有“name”属性

-“Location”,具有“latitude”、“longitude”和“city_id”属性

这样,位置将具有默认值纬度和经度值,然后我们可以精确它们。

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

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

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
4

2 回答 2

2

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

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

或者,如果上述方法不起作用:

geocoded_by :city_name

def city_name
  self.city.name
end
于 2012-10-21T15:49:28.533 回答
0

您需要has_many在两个模型之间建立关联。

本指南向您展示如何: http: //guides.rubyonrails.org/association_basics.html

于 2012-10-21T10:17:15.063 回答