0

大约一周前,我进行了迁移以从我的第一个应用程序中删除一列:

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
4

1 回答 1

0

这是我的迁移理念:

当我处于开发阶段时,迁移的想法是我可以在部分中进行更改up,并在部分中将其反转down。根据我的需要,我可以回滚到起点并前进到顶部或中途停止。我仍在“开发”系统,并且正在创建有关我的数据库在任何时间点需要位于何处的规则。(我控制水平。我控制垂直。)

当我调试迁移时,我有时会回滚一两个级别,然后前滚以微调更改。有人说我们应该只前滚,所以这一切都是完全可重现的。当数据是一次性的时,我通常认为撤消另一个迁移的愚蠢步骤是没有意义的,所以我会备份、调整并再次运行它。您或其他人的里程可能会有所不同。

一旦我从开发阶段进入测试和生产阶段,规则就会改变。我前进到最后并留在那里,因为那时我的数据库和代码应该非常稳定,并且我正在“真实”加载数据。

于 2013-05-20T15:18:59.240 回答