修改现有迁移文件有什么危险吗?

G. *_*sen 1 postgresql ruby-on-rails

我最近开始工作的一家公司在某个时间点设法删除了他们的一个迁移文件 - 或者至少我是这么认为的。该文件创建了一个表users,但该表已被删除。

我通常不会介意,如果不是因为本地构建项目会失败,除非我暂时硬塞在包括此表创建在内的早期迁移中,这是因为后来的迁移都会修改此假定表上的列,并users最终删除表格。我最近所做的只是将其添加到正在创建其他表的现有迁移文件中,比如说products,我一直在从一个分支“携带”到另一个分支,非常小心,不要提交它。

它看起来像这样(示例):

class AddProductsTable < ActiveRecord::Migration
  def change
    create_table :products do |t|
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我已更改为:

class AddProductsTable < ActiveRecord::Migration
  def change
    create_table :products do |t|
    end

    create_table :users do |t|
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我本质上想知道这样做是否会对生产造成任何损害。毕竟,迁移已经运行了,所以不会再次执行吗?我很想这样做,因为它很快就变旧了,当我需要重建时,总是记得重新创建或携带这段代码,但我没有足够的信心,认为不好的事情不会发生,也不会发生。我在谷歌上找到了很多答案。

PS.,我是该项目目前唯一的开发人员,他们没有任何其他开发人员可以向我询问这个​​问题。

Mos*_*leb 5

如果您尚未运行迁移,则编辑迁移文件没有问题。否则:引用导轨指南:

一般来说,编辑现有迁移并不是一个好主意。如果现有版本的迁移已经在生产计算机上运行,​​您将为自己和同事创造额外的工作,并造成严重的麻烦。相反,您应该编写一个新的迁移来执行您所需的更改。编辑尚未提交到源代码控制的新生成的迁移(或者更一般地说,尚未传播到您的开发计算机之外)相对无害。

来源:更改现有迁移