2012-10-21 67 views
2

我習慣使用地理編碼器gem,我在http://railscasts.com/episodes/273-geocoder中看到的方式,但是我的模型變得比給出的示例稍微複雜一些。導軌 - Geocoder Gem:geocoded_by與兩個表格

現在,我想用2種型號:
- 「城市」,其中有一個 「name」 屬性

- 「位置」,其中有 「緯度」, 「經度」 和「city_id 「屬性

這樣,位置將具有默認的緯度和經度值,然後我們可以精確地確定它們。

問題是,在位置模型中,如何指定該位置是geocoded_by 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

我試着回答你的問題,但是如果你是通過城市名稱進行地理編碼的,那麼不應該將經緯度存儲在城市表格中嗎?我的意思是在一個城市的所有地點都會有相同的經緯度。你可能會將它存儲在城市表格中,而不是位置。 – Mischa

回答

2

不知道它的工作原理,但你可以嘗試:

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

,或者如果上述不工作:

geocoded_by :city_name 

def city_name 
    self.city.name 
end 
+0

謝謝。 「geocoded_by self.city.name」不起作用,但使用私有方法,它運行良好。 – Nanego