У нас есть script/generate migration add_fieldname_to_tablename fieldname:datatype
синтаксис для добавления новых столбцов в модель.
В той же строке, у нас есть сценарий / генерировать для изменения типа данных столбца? Или я должен написать SQL прямо в моей миграции?
Я хочу изменить столбец с datetime
на date
.
ruby-on-rails
migration
papdel
источник
источник
change
действие на отдельноеup
иdown
действия, так какchange_column
это необратимая миграция, которая вызовет ошибку, если вам потребуется откат.Вы также можете использовать блок, если у вас есть несколько столбцов для изменения в таблице.
Пример:
См. Документацию API для класса Table для более подробной информации.
источник
Я не знаю, можете ли вы создать миграцию из командной строки, чтобы сделать все это, но вы можете создать новую миграцию, а затем отредактировать миграцию, чтобы выполнить эту задачу.
Если tablename - это имя вашей таблицы, fieldname - это имя вашего поля, и вы хотите изменить дату с даты на дату, вы можете написать миграцию для этого.
Вы можете создать новую миграцию с помощью:
Затем отредактируйте миграцию, используя change_table:
Затем запустите миграцию:
источник
Как я обнаружил в предыдущих ответах, для изменения типа столбца необходимо выполнить три шага:
Шаг 1:
Создайте новый файл миграции, используя этот код:
Шаг 2:
Перейдите в
/db/migrate
папку и отредактируйте созданный вами файл миграции. Есть два разных решения.2.
Шаг 3:
Не забудьте выполнить эту команду:
Я проверил это решение для Rails 4, и оно работает хорошо.
источник
С рельсами 5
Из направляющих рельсов :
источник
Просто создайте миграцию:
Обновите миграцию так:
и наконец
источник
Другой способ изменить тип данных с помощью миграции
Шаг 1: Вам нужно удалить ошибочное имя поля типа данных, используя миграцию
например:
Здесь не забудьте указать тип данных для вашего поля
Шаг 2: Теперь вы можете добавить поле с правильным типом данных
например:
Вот и все, теперь ваша таблица будет добавлена с правильным полем типа данных, Happy ruby coding!
источник
Все это при условии, что тип данных столбца имеет неявное преобразование для любых существующих данных. Я сталкивался с несколькими ситуациями, когда существующие данные, например,
String
можно неявно преобразовать в новый тип данных, скажемDate
.В этой ситуации полезно знать, что вы можете создавать миграции с помощью преобразования данных. Лично мне нравится помещать их в мой файл модели, а затем удалять их после того, как все схемы базы данных были перенесены и стабильны.
источник
Чтобы завершить ответы в случае редактирования значения по умолчанию :
В вашей консоли рельсы:
В миграции:
Будет выглядеть так:
источник