Я пытаюсь изменить тип столбца в PostgreSQL (Rails 6).
миграция:
# frozen_string_literal: true
class ChangeUsersEmailToCitext < ActiveRecord::Migration[6.0]
def up
enable_extension('citext')
change_column :users, :email, :citext
end
def down
change_column :users, :email, :string
end
end
Но сильная миграция вызывает ошибку и говорит следующее:
=== Dangerous operation detected #strong_migrations ===
Changing the type of an existing column blocks reads and writes
while the entire table is rewritten. A safer approach is to:
1. Create a new column
2. Write to both columns
3. Backfill data from the old column to the new column
4. Move reads from the old column to the new column
5. Stop writing to the old column
6. Drop the old column
Я понимаю смысл и опасность блокировки db ... но мой вопрос довольно глупый, и я не нашел на него ответа. Как буквально я могу заработать 2, 4 и 5 баллы? Как я могу заставить мою модель ActiveRecord писать в оба столбца одновременно и переключаться после обратного заполнения в правый?