Как создать новый ненулевой столбец с существующими данными? - PullRequest
0 голосов
/ 01 октября 2018

Я создаю новый столбец в таблице, который является uuid / guid.

add_column: users,: uuid,: string, null: false

Я устанавливаю uuid с помощью:

SecureRandom.uuid

Миграция не выполняется, поскольку существующие данные не имеют никакого значения.

Как я могу установить значение для каждого пользователя с новым uuid во время этой миграции?

1 Ответ

0 голосов
/ 01 октября 2018

У вас есть 2 варианта при добавлении ненулевого столбца:

  1. Укажите базу данных по умолчанию
  2. Добавить столбец, который может обнуляться, обновить все данные, изменить столбец на ненулевой.

В зависимости от того, какую БД вы используете, она может или не может позволить вам установить выражение в качестве значения по умолчанию.

Поскольку вы упомянули, что используете Postgres, вы можете прочитать больше здесь Синтаксис Rails для предоставления по умолчанию будет

default: -> { 'uuid_generate_v1()' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...