我做了一次迁移,以便在一周前从我的第一个应用程序中删除一个列:
class RemoveHalfOrFullFromFurlough < ActiveRecord::Migration
def up
remove_column :furloughs, :half_or_full
end
def down
add_column :furloughs, :half_or_full, :decimal
end
end
我一定做错了,因为half_or_full
仍在我的架构中。直到今天我才尝试添加Active Admin gem时才注意到。它错误,因为它试图从这个僵尸列中提取数据,并且不知道如何处理它。
之后我做了很多迁移,所以我不认为简单的回滚是一种选择。也许是吗?
这是创建列的原始迁移:
class AddHalfOrFullToFurloughs < ActiveRecord::Migration
def change
add_column :furloughs, :half_or_full, :decimal
end
end
答案 0 :(得分:0)
这是我的迁移理念:
当我处于开发阶段时,迁移的想法是我可以在up
部分进行更改,并在down
部分中对其进行反转。根据我的需要,我可以回到起点并向前滚动到中途或中途停止。我还在“开发”系统,我正在创建关于我的数据库在任何时间点需要的位置的规则。 (我控制水平。我控制垂直。)
在调试迁移时,我有时会回滚一两个级别,然后前滚以微调更改。有些人说我们应该只向前推进,所以它完全可以重现。当数据是一次性的时,我通常没有意识到用另一个迁移撤消一个愚蠢的步骤,所以我会备份,调整并再次运行它。您或其他人的里程可能会有所不同。
一旦我从开发阶段转向测试和生产,规则就会发生变化。我滚动到最后并留在那里因为我的数据库和代码应该非常稳定,我正在加载数据“for reals”。