Автоматическое создание моделей из таблиц в Ruby on Rails 3

Очень часто бывает ситуация, когда имеется готовая структура БД, и необходимо сделать модели на её основе. Если таблиц 10, то это не проблема, а если больше, и они большие по структуре? Импорт можно сделать буквально за 5 минут!

На данный момент есть несколько методик, которые позволяют импортировать структуру из бд. Они делятся на два типа:

1. Создают модели “на-лету”: acts_as_importable plugin

2. Генерируют модели: Trucker, Использование ActiveRecord, Legacy_data

Я попробовал использовать Legacy_data. Итак, что нужно сделать для генерации моделей в Rails 3 приложении.

Создаем приложение

Редактируем файл ./config/database.yml, в котором запишем реквизиты доступа к БД.

В файле ./Gemfile добавим следующую строчку:

Т.к. Rails 3 поддерживает только версия 0.2.0 legacy_data, которой нет на rubygems.

Качаем гемы:

И генерируем модели:

Я натравил его на базу с PhpMyAdmin, таблицы были проанализированы.

Модели к сожалению не создались, из-за ошибки:

Наверное, придется использовать rails 2.3 и lagacy_data 0.1.1 или ждать, когда автор исправит баги.

UPD: от автора поступил ответ по этому багу:

I’m still working on the 0.2.0 version with Rails 3 and as you have figured out its not quite ready.  The specs are all passing but it doesn’t quite work when used as a generator inside a real rails project.  I hope to get that working soon and will leave this issue open until I do.
Sorry for the inconvenience.

UPD: Автор по моей просьбе исправил багу, и выпустил версию 0.2.0 legacy_data. После обновления всё заработало. Сгенерированный модели можете посмотреть здесь:  models-legacy-data-generated. А вот полный лог того, что надо сделать:

Так что теперь legacy_data работает с Rails 3!

3 Comments

  1. Автор вновб обновил legacy_data. Теперь исправлен баг “can’t convert String into Integer (TypeError)”!

Leave a Comment