рельсы 3: как генерировать модели для существующих таблиц базы данных - PullRequest
17 голосов
/ 07 ноября 2010

Я настроил свой database.yml, чтобы он указывал на мою существующую базу данных mysql

как я могу генерировать модели из него?

rails generate model existing_table_name

дает только пустую модель ..

Ответы [ 6 ]

15 голосов
/ 12 сентября 2012

Вы можете попробовать Rmre .Он может создавать модели для существующей схемы и пытается создать все отношения на основе информации о внешних ключах.

10 голосов
/ 08 ноября 2010

Модель Rails не показывает ваши поля, но вы все равно можете их использовать. Попробуйте следующее. Предполагая, что у вас есть Модель с именем ModelName и поле с именем «name», запустите консоль Rails и введите:

ModelName.find_by_name('foo')

Учитывая имя, которое существует в БД, вы должны увидеть результаты.

Rails не выводит отношения, хотя, если ваша база данных следует соглашениям Rails, их легко добавить.

Обновление

Я заметил, что это конкретное отсутствие явности («волшебство») является источником путаницы для новичков в Rails. Вы всегда можете заглянуть в schema.rb, чтобы увидеть модели и все поля в одном месте. Также, если вы предпочитаете видеть схему для каждой модели в файле модели, вы можете использовать гем annotate_models , который поместит схему БД в комментарий в верхней части файла модели.

3 голосов
/ 22 марта 2014

Ваш ответ:

$ rake db:schema:dump

Это установит новый db/schema.db для создания схемы вашей БД.

1 голос
/ 10 ноября 2010
1 голос
/ 08 ноября 2010

ActiveRecord не анализирует определение схемы.Он запрашивает у DBM таблицу определений и вычисляет поля на лету.

Наличие схемы полезно, если вы собираетесь изменять таблицы с помощью миграций.Schema Dumping and You поможет вам создать дамп для использования в качестве справочного материала при построении миграций.

ActiveRecord делает некоторые предположения относительно именования таблиц и ожидает, что поле id будет первичным ключомпорядковый номер в качестве типа.Миграция поможет вам реорганизовать таблицы и / или имена и типы полей, но вы можете делать те же вещи через командную строку вашей DBM.Вам не обязательно следовать стилю ActiveRecord, но это помогает избежать странных ошибок и позволяет AR делать выводы, чтобы облегчить вашу жизнь.

0 голосов
/ 27 февраля 2014

Взгляните на драгоценный камень rare_map. https://github.com/wnameless/rare_map Работает как на Rail 3, так и 4.

...