Совпадают ли модели и схема в ruby? - PullRequest
1 голос
/ 06 августа 2020

Я сбит с толку после того, как мы сделаем db: migrate, что означает схема? Изменяет ли он модели автоматически, если они подключены, или нам нужно вручную изменять модели, чтобы они отражали схему?

Ответы [ 2 ]

3 голосов
/ 06 августа 2020

Если вы говорите о файле db/schema.rb, это не то же самое, что миграция. Миграция предназначена для запуска команд базы данных для обновления фактической базовой схемы базы данных. Когда вы запускаете rake db:migrate, он пытается запустить любые ожидающие миграции в базе данных. В случае успеха он также выполнит под капотом rake db:schema:dump, который обновит файл db/schema.rb, который отражает последнюю версию фактической схемы. Если по какой-то причине миграция завершится неудачно из-за какой-либо ошибки, она откатится и оставит схему в ее предыдущем состоянии, чтобы выполнить миграцию.

Модели в Rails не касаются самой схемы, но там являются генераторами, которые помогут вам создать файл миграции. Чтобы лучше понять, как все это работает, вам действительно стоит прочитать документацию здесь

0 голосов
/ 07 августа 2020

файл db/schema.rb представляет текущую конфигурацию базы данных после любых успешных (или неудачных) миграций.

ActiveRecord использует db/schema.rb для «автоматической» настройки атрибутов методов, например, если есть users со столбцом first_name, тогда модель User будет иметь метод name и метод name= в качестве методов получения и установки для этого столбца.

Вам не обязательно сконфигурируйте модели самостоятельно, ActiveRecord сделает все за вас.

ActiveRecord также позаботится о приведении типов переменных, соответствующих столбцу, определенному в db/schema.rb.

...