我习惯按照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
答案 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