Розуміння міграцій Rails: up, down та скасування змін

Rails міграції — потужна можливість Ruby on Rails, яка дозволяє керувати та версіонувати схему бази даних з часом. Вони надають спосіб змінювати структуру бази даних у структурованому та організованому вигляді, що полегшує співпрацю з іншими розробниками та деплой змін у продакшн.

pic

Розуміння Rails міграцій: up, down та скасування змін

У цій статті ми розглянемо:

  1. Що таке Rails міграції?
  2. Створення міграцій
  3. Запуск міграцій (up та down)
  4. Скасування міграцій
  5. Скидання бази даних
  6. Різниця між методами up, down, та change методи
  7. Приклади поширених міграцій
  8. Найкращі практики

1. Що таке Rails міграції?

Rails міграції — це Ruby класи, які використовуються для зміни схеми бази даних. Кожна міграція є самостійним скриптом, який описує набір змін, що повинні бути внесені до бази даних, таких як створення або видалення таблиць, додавання чи видалення стовпців, або зміна індексів.

Міграції зберігаються в директорії db/migrate і мають імена, що містять часові мітки для забезпечення їх виконання в правильному порядку.

2. Створення міграцій

Ви можете створити нову міграцію за допомогою команди rails generate migration. Наприклад:

rails generate migration CreateProducts

3. Запуск міграцій (up та down)

Міграції мають два основних методи: up і down.

  • Метод up: Цей метод використовується для застосування міграції, тобто для внесення змін до схеми бази даних.
  • Метод down: Цей метод використовується для скасування міграції, тобто для відкату змін, внесених методом up.

Приклад:

class AddQuantityToProducts < ActiveRecord::Migration[6.1]  
 def up  
 add_column :products, :quantity, :integer  
 end  

 def down  
 remove_column :products, :quantity  
 end  
end

У цьому прикладі:

  • Метод up додає стовпець quantity до таблиці products.
  • Метод down видаляє стовпець quantity з таблиці products.

4. Скасування міграцій

Якщо потрібно скасувати міграцію, використовуйте команду rails db:rollback. Це виконає метод down останньої міграції.

rails db:rollback

Ви також можете скасувати кілька міграцій, вказавши параметр STEP:

rails db:rollback STEP=2

Тут STEP вказує кількість останніх міграцій.

5. Скидання бази даних

Якщо потрібно скинути всю базу даних і запустити всі міграції з нуля, використовуйте команду rails db:reset:

rails db:reset

Ця команда виконує наступне:

  1. Видаляє базу даних.
  2. Створює нову базу даних.
  3. Запускає всі міграції з початку.

6. Різниця між методами up, down та change

  • Метод up: Використовується для застосування міграції.
  • Метод down: Використовується для скасування міграції.
  • Метод change: Спрощений метод, який Rails може використовувати для автоматичного генерування методу down для поширених операцій, таких як create_table, add_column тощо.

Приклад методу change:

class AddQuantityToProducts < ActiveRecord::Migration[6.1]  
 def change  
 add_column :products, :quantity, :integer  
 end  
end

У цьому прикладі Rails автоматично знає, як відмінити міграцію (тобто видалити стовпець quantity) без необхідності вказувати явний метод down.

7.

Приклади поширених міграцій

Створення таблиці

class CreateUsers < ActiveRecord::Migration[6.1]  
 def change  
 create_table :users do |t|  
 t.string :name  
 t.string :email  
 t.timestamps  
 end  
 end  
end

Додавання стовпця

class AddAgeToUsers < ActiveRecord::Migration[6.1]  
 def change  
 add_column :users, :age, :integer  
 end  
end

Видалення стовпця

class RemoveAgeFromUsers < ActiveRecord::Migration[6.1]  
 def change  
 remove_column :users, :age  
 end  
end

Додавання індексу

class AddIndexToUsersEmail < ActiveRecord::Migration[6.1]  
 def change  
 add_index :users, :email, unique: true  
 end  
end

Зміна типу стовпця

class ChangeAgeToFloatInUsers < ActiveRecord::Migration[6.1]  
 def change  
 change_column :users, :age, :float  
 end  
end

8. Найкращі практики

  1. Зберігайте міграції ідемпотентними: Переконайтеся, що повторний запуск однієї й тієї ж міграції не викликає проблем. Це особливо важливо в продакшн середовищах.
  2. Уникайте зміни міграцій після їх виконання: Коли міграція вже була виконана в продакшн середовищі, уникайте її зміни. Замість цього створюйте нову міграцію для внесення подальших змін.
  3. Використовуйте метод change коли можливо: Використовуйте метод change для простих міграцій, оскільки це зменшує необхідність написання обох методів up та down.
  4. Тестуйте міграції: Завжди тестуйте свої міграції в розробницькому середовищі перед їх запуском у продакшн.
  5. Резервне копіювання бази даних: Перед запуском міграцій у продакшн, переконайтеся, що у вас є резервна копія бази даних.

Міграції Rails є важливою частиною управління схемою бази даних в додатку Rails. Розуміння того, як створювати, запускати та скасовувати міграції, дозволить вам забезпечити безперервний розвиток вашої бази даних разом із додатком. Пам’ятайте про найкращі практики та тестуйте міграції ретельно, щоб уникнути потенційних проблем у продакшн середовищі.

З цим посібником ви маєте міцну основу для ефективної роботи з міграціями Rails. Щасливого кодування!

Перекладено з: Understanding Rails Migrations: up, down, and Reverting Changes

Leave a Reply

Your email address will not be published. Required fields are marked *