Мультиблог на Ruby on Rails. Миграции и модели. Команды для их создания и применения. Урок 2.

Для работы с миграциями, у вас как минимум должно быть настроено подключение к базе данных. Настраивается оно в файле /config/database.yml Там нас интересует секция:

development:
  <<: *default
  database: db/development.sqlite3

Здесь указано, что мы будем использовать конфигурацию default, которая в свою очередь использует адаптер sqlite3 Ну и собственно в настройке database прописан пусть к самому файлу базы. То есть по умолчанию в Руби уже из коробки настроено подключение к базе SQLite, и на первых порах это нас устроит (тем более, мы только учимся).

Создание модели и миграции

Теперь давайте попробуем создать модель. Для этого перейдём в папку проекта и введём в консоли следующую команду: 

rails g model Post title:string body:text

Здесь мы сразу указали поля, которые, как предполагается будут использоваться у нас в модели. При этом в папке app/models будет создан файл модели, а в директории db/migrate появится соответствующая миграция, после применения которой, в базе данных будет создана табличка с полями title (тип string) и body (тип text).

Применение и откат миграций

Чтобы применить миграции и соответственно создать базу данных со всей необходимой структурой, нужно ввести команду:

rails db:migrate

Соответственно все изменения будут внесены в файл db/development.sqlite3 и если у вас есть соответствующая программа для открытия такого файла (например DB Browser for SQLite), то вы уже сможете увидеть всю структуру базы данных.

В случае, если миграцию нужно откатить (отменить внесенные изменения), то используется команда:

rails db:rollback STEP=3

В параметре STEP указывается количество шагов, на которые необходимо откатить изменения. Если этот параметр не указывать, то он по умолчанию будет равен 1. 

Создание миграции для добавления нового поля

Предположим, мы на каком-то этапе забыли добавить определённое поле. Применительно к нашей ситуации, это поле image, так как впоследствии мы будем рассматривать добавление изображения в запись блога. В Ruby on Rails так устроено, что когда вы в консоли будете прописывать команду на создание миграции, ей в качестве аргумента необходимо будет задать соответствующее имя; так вот, если в названии миграции использовать те или иные ключевые слова, то фреймворк сам поймёт какие поля, в каких таблицах необходимо будет создать (более подробно можно прочитать об этом здесь https://guides.rubyonrails.org/active_record_migrations.html). В нашем случае необходимо создать колонку image в таблице posts, поэтому чтобы воспользоваться данным преимуществом фреймворка в именовании миграций, мы пропишем команду на создание миграции следующим образом:

rails generate migration AddImageToPosts image:string

И действительно, если теперь зайти в директорию db/migrate, то можно убедиться что в ней был создан файл миграции с необходимыми нам полями. Ну и не забываем вновь применить миграцию, чтобы все изменения вступили в силу. 

На всякий случай, коммит с изменениями - https://github.com/maclen2007/simple_ruby_blog/commit/425b2a6da5be13346ede0739b0590bda4fa227dc