В Rails миграции имеют метод down
по умолчанию для отмены миграции. В каком случае я бы хотел отменить миграцию?
Некоторые мысли:
Будь то в процессе разработки или производства, у меня всегда есть моментальный снимок базы данных, к которому я могу вернуться, прежде чем я даже выполню миграцию. Специально для миграций, которые выполняют преобразование данных, я обнаружил, что в большинстве случаев возврат снимка происходит даже быстрее, чем возврат миграции. (Так что я бы никогда не сделал это в спешке!)
Если миграция не удастся выполнить, она либо:
- завершится с ошибкой в нетранзакционной базе данных и, таким образом, оставит базу данных поврежденной или
- с ошибкой произойдет исключение и откат транзакции, поэтому нет необходимости возвращать ее в противном случае.
Если внесенные изменения находятся в производстве (или находятся на поздней стадии разработки) и позже окажутся ошибкой, я исправлю свою ошибку в новой миграции. Я бы не вернул старый. В процессе разработки я бы просто удалил миграцию.
Я также обнаружил, что метод down вводит дополнительный код, в котором я повторяюсь, и, таким образом, может вносить новые ошибки. Это противоречит принципу СУХОЙ.
Так что мне любопытны плюсы, потому что я не могу думать ни о чем.