Рельсы Городские Списки - PullRequest
0 голосов
/ 12 ноября 2009

Я относительно новичок в рельсах, и я работаю над задачей, которая требует аналогичной функциональности на вкладке Города здесь: http://haystack.com/cities. Я обыскал все книги и не могу понять логику, которая делает все это возможным. Единственное, о чем я могу подумать, - это перепроектировать код электронной коммерции, чтобы делать то, что я хочу. У кого-нибудь есть яркие идеи?

Ответы [ 2 ]

2 голосов
/ 13 ноября 2009

Вам по крайней мере нужно получить список данных города / штата, например, из geonames.org или zipcodeworld.com. Затем вам нужно будет сопоставить города со штатами, штаты со странами, а затем придумать, как их отобразить, как на сайте haystack.com. Я полагаю, что рейтинг самых популярных городов определяется либо количеством пользователей, которые запрашивали каждый город, либо просто предполагаемыми популярными городами.

В основном это будет просто информация о том, как вы связываете каждый из этих типов данных (город, штат, страна). На самом деле показать, кроме как выложить все это, просто. В основном, в вашей БД есть таблица городов, штатов и стран, а затем создайте модели, например:

class Country
  has_many :states
end

class State
  belongs_to :country
  has_many :cities
end

class City
  belongs_to :state
end

EDIT: Чтобы связать его с пользователями: если предположить, что пользователь может принадлежать только одному городу (хотя с несколькими также не составит особого труда), он будет выглядеть примерно так:

class User 
   belongs_to :city 
end 

class City
   belongs_to :state
   has_many :users 
end 

Вы должны быть в состоянии сделать что-то вроде:

usr = User.find(a_user_id) 
usr.city                 #New York City 
usr.city.state           #New York 
usr.city.state.country   #United States
0 голосов
/ 12 ноября 2009

Возможно что-то вроде этого:

http://www.geonames.org/export/

это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...