
Розширені міграції
Складні міграції, reversible migrations, міграції даних, rollbacks, обмеження БД проти валідацій, safe migrations
1Яка різниця між методами change та up/down у міграції Rails?
Яка різниця між методами change та up/down у міграції Rails?
Відповідь
Метод change — це спрощений синтаксис, представлений у Rails 3.1, який дозволяє Rails автоматично визначати зворотну операцію. Він працює для більшості поширених операцій, як-от add_column чи create_table. Методи up і down забезпечують явний контроль над операціями застосування та rollback, що необхідно, коли Rails не може автоматично визначити зворотну операцію, наприклад під час видалення даних або складних перетворень.
2Як зробити міграцію зворотною, коли Rails не може автоматично визначити зворотну операцію?
Як зробити міграцію зворотною, коли Rails не може автоматично визначити зворотну операцію?
Відповідь
Блок reversible дозволяє явно визначати операції up і down усередині методу change. Це особливо корисно для операцій на кшталт remove_column, де Rails потрібно знати тип і параметри стовпця, щоб відтворити його під час rollback. Блок reversible пропонує гнучкість up/down, зберігаючи сучасний синтаксис change.
3Яка команда дозволяє відкотити кілька міграцій за одну операцію?
Яка команда дозволяє відкотити кілька міграцій за одну операцію?
Відповідь
Команда rails db:rollback STEP=n дозволяє відкотити останні n виконаних міграцій. Наприклад, STEP=3 відкотить три останні міграції у зворотному порядку їх виконання. Без опції STEP відкочується лише остання міграція. Ця команда корисна для швидкого повернення до попереднього стану бази даних під час розробки.
Чому слід уникати використання посилань на модель ActiveRecord у міграціях даних?
Яка найкраща практика для виконання міграції даних у продакшені на великій таблиці?
+17 питань зі співбесід
Інші теми співбесід Ruby on Rails
Основи Ruby
Об'єктно-орієнтоване програмування в Ruby
Основи Rails
Routing & Controllers
Основи ActiveRecord
Views та шаблони ERB
Асоціації ActiveRecord
Розширені запити ActiveRecord
Форми Rails
Автентифікація та авторизація
Сучасний Asset Pipeline та frontend
Режим API Rails
Тестування з RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Стратегії кешування
Rails Engines та модульні застосунки
Оптимізація продуктивності
Патерни проєктування Rails
Метапрограмування в Ruby
Безпека Rails
GraphQL із Rails
Розгортання та Продакшн
Monitoring & Logging
Стратегії оновлення Rails
Опануй Ruby on Rails для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно