Подтвердить что ты не робот

Rails 3: как создавать модели для существующих таблиц базы данных

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

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

rails generate model existing_table_name

дает только модель emty.

4b9b3361

Ответ 1

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

ModelName.find_by_name('foo')

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

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

Обновление

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

Ответ 2

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

Ответ 3

Ваш ответ:

$ rake db:schema:dump

Это создаст новую db/schema.db, чтобы создать схему вашей БД.

Ответ 4

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

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

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

Ответ 6

Взгляните на жемчужину редких камней. https://github.com/wnameless/rare_map Он работает как на рейсах 3, так и на 4.