2012-10-21 1 views
2

Я привык работать с драгоценным камнем геокодера так, как я видел в http://railscasts.com/episodes/273-geocoder, но моя модель становится немного более сложной, чем данный пример.Rails - Geocoder Gem: geocoded_by с 2 таблицами

Теперь я хотел бы использовать 2 модели:
- «Город», который имеет «имя» атрибут
и
- «Местоположение», который имеет «широта», «долгота» и «CITY_ID "attributes

Таким образом, местоположение будет иметь значения широты и долготы по умолчанию, а позже мы сможем их точно определить.

Вопрос в модели местоположения, как я могу указать, что местоположение geocoded_by имя в модели City?

Я искал что-то простое, как и что:

geocoded_by :city, :name 

или

geocoded_by self.city.name 

Спасибо за вашу помощь.

Edit: Вот текущие модели:

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

Я пытался ответить на ваш вопрос, но если вы геокодируете по имени города, не следует хранить и хранить в таблице городов? Я имею в виду, что все местоположения в городе будут иметь один и тот же lat/lon. Вы можете также сохранить его в таблице городов вместо местоположений. – 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

0

Вам нужно будет настроить has_many связь между вашими двумя моделями.

Это руководство покажет вам, как: http://guides.rubyonrails.org/association_basics.html

+0

Собственно, это уже сделано так: каждое место принадлежит_о: город, и каждый город has_many: location – Nanego

 Смежные вопросы

  • Нет связанных вопросов^_^