Как стать автором
Обновить

Связанные между собой страны и города мира на русском языке в формате seeds.rb для Ruby on Rails

Хабр, привет! Недавно столкнулся с необходимостью создания динамических селектов стран и городов для своего проекта на Ruby on Rails Brainlook. Пришлось потратить немало времени, чтобы найти достойный дамп стран и городов на русском языке и перенести его к себе на базу в оптимизированном виде. Я решил, что было бы здорово поделиться своей разработкой с остальными разработчиками, дабы люди меньше тратили время на скучные задачи и больше — на творческие. Sharing is caring!

Описание


Что это?

Файлы формата seeds.rb для Ruby on Rails, содержащие связанные между собой крупнейшие страны и города мира на русском языке. 105 стран, 10306 городов.

Зачем это?

Позволяет посредством ввода пары простых команд наполнить базу любой структуры странами и городами.

Кому это надо?

Любому Ruby on Rails разработчику, который собирается добавить на свой проект выбор стран и городов для пользователей на русском языке.

В чем преимущества?

Очень простая структура — нет ничего лишнего. У каждого города есть страна. Отсутствуют повторы. Благодаря формату seed, эти данные могут быть одинаково легко интегрированы в любой тип БД.

Так какая же структура?

table "cities"
  t.string   "name"
  t.integer  "country_id"
end
table "countries"
  t.string   "name"
end


Пример записей:

<City id: 173, name: "Санкт-Петербург", country_id: 1, created_at: "2013-08-25 10:13:39", updated_at: "2013-08-25 10:13:39">
<Country id: 105, name: "Япония", created_at: "2013-08-25 10:13:37", updated_at: "2013-08-25 10:13:37">


Использование


Предположим, у вас в проекте еще отсутствуют таблицы Cities и Countries.
  1. Создаем файлы для таблиц командой в терминале:
    rails g scaffold Country name:string
    rails g scaffold City name:string country_id:integer
  2. Прогоняем миграции для добавления таблиц к базе
    rake db:migrate
  3. Скачиваем файл seeds.rb и меняем на свой. Либо скачиваем cities.seeds.rb и countries.seeds.rb, копируем их содержимое в файл seeds.rb своего проекта и в первую строчку вставляем
    # encoding: utf-8
  4. Прогоняем сид
    rake db:seed

Готово, вы восхитительны!

Ссылка на файлы в github.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.