Является ли плохой практикой то, что я не записываю шаги необратимой миграции, такие как команды drop_table
? Должны ли миграции быть полностью обратимыми?
Должны ли мои миграции Rails быть обратимыми к началу?
Ответы (1)
Они «должны» быть обратимыми только в том случае, если вы когда-либо собираетесь обратить вспять один или несколько из них... что, честно говоря, произойдет хотя бы один раз во время вашего развития. Вы всегда должны стремиться к обратимым миграциям, так как вы никогда не знаете, когда они могут вам понадобиться.
То, что сбивает вас с толку, так это то, что ваши данные могут не пережить обратные миграции. т. е. простое добавление столбца и заполнение его данными только для того, чтобы отменить его, приведет к потере всех этих данных при обращении. Продвижение вперед снова не приведет к повторному заполнению данных. Не отступайте безнаказанно.
При этом рельсы предоставляют метод change
, который, что касается структуры, во многих случаях предоставляет вам реверс. Однако это работает не во всех ситуациях.