Ruby on rails 我的Rails迁移应该从一开始就可逆吗?

Ruby on rails 我的Rails迁移应该从一开始就可逆吗?,ruby-on-rails,migration,rails-migrations,Ruby On Rails,Migration,Rails Migrations,我不写下不可逆迁移的步骤,例如drop\u table命令,这是一种不好的做法吗?迁移必须是完全可逆的吗 它们“必须”是可逆的,只有当你打算逆转其中一个或多个时……老实说,在你的发展过程中,至少会发生一次。您应该始终努力进行可逆迁移,因为您永远不知道何时可能需要它 可以说,让您抓狂的是,您的数据可能无法在反向迁移中存活。i、 例如,只需添加一列并填充数据,而只需将其反转,就会导致在反转过程中丢失所有数据。再次前进不会重新填充数据。不要轻易放弃 也就是说,rails提供了一种change方法,就结

我不写下不可逆迁移的步骤,例如
drop\u table
命令,这是一种不好的做法吗?迁移必须是完全可逆的吗

它们“必须”是可逆的,只有当你打算逆转其中一个或多个时……老实说,在你的发展过程中,至少会发生一次。您应该始终努力进行可逆迁移,因为您永远不知道何时可能需要它

可以说,让您抓狂的是,您的数据可能无法在反向迁移中存活。i、 例如,只需添加一列并填充数据,而只需将其反转,就会导致在反转过程中丢失所有数据。再次前进不会重新填充数据。不要轻易放弃


也就是说,rails提供了一种
change
方法,就结构而言,在很多情况下,这种方法为您提供了相反的效果。不过,它并不适用于所有情况。

对于破坏性迁移,例如删除表或列,我通常不会在代码更改的同时编写它们。相反,我删除模型并进行所有代码更改、部署,只有在一段时间后,我才单独编写迁移以清除数据。我分批执行这些操作,并在它们运行之前保留备份,这只是为了更加安全。我有一个用于此目的的外部电子表格。是的,这有点乏味,但它救了我不止一次。结帐