Я помогаю с помощью рельсов для друга. У них есть база данных, которая содержит много таблиц, которые были добавлены вручную с использованием SQL, а не с рельсовыми миграциями. Они начали добавлять миграции нормально, но им нужно вернуть их обратно.Как исправить базу данных с множеством таблиц без соответствующих миграций с помощью Rails
Если мы добавим сейчас миграции, они будут ошибочными, поскольку эти таблицы/столбцы уже существуют. Если мы их оставим, люди должны использовать db: schema: load для запуска и запуска, а затем запускать миграцию по одному по имени, чтобы избежать ошибок. Мы бы хотели избежать этого и вернуться к здоровому состоянию.
Кто-нибудь знает, как лучше получить миграцию назад с помощью базы данных? Мы должны сделать это, не теряя никаких данных.
Похоже, это потерпит неудачу в прод, потому что это было бы попытайтесь создать эти таблицы, и они уже существуют, нет? Я добавил предложение, чтобы уточнить, что мы должны делать это без потери данных. – williamcodes
@william коды вы всегда можете использовать 'ActiveRecord :: Base.connection.table_exists? «table_name», чтобы проверить и не запустить миграцию –
, что имеет смысл. Вы имеете в виду использовать его в качестве условного в файле миграции, чтобы он не запускался дважды, не так ли? Можете ли вы добавить это к своему ответу? – williamcodes