我应该在回滚后删除迁移吗?

我对ruby和铁轨都很陌生,而且我只是围绕着迁移。

我的问题是在回滚后删除迁移的最佳做法或时机是什么。 到目前为止,我所看到的是回滚后是否删除迁移是一个问题,但是在团队中工作时删除迁移是否有任何重大影响,离开迁移文件有什么好处而不是删除它?

在我的情况下最有意义的是什么?

我有我的原始迁移文件20140731141350_create_users.rb

class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :email t.string :password t.timestamps end end end 

我需要添加一个salt列,所以我创建了迁移20140804125449_add_salt_colum_to_users.rb

 class AddSaltColumToUsers < ActiveRecord::Migration def change add_column :users, :salt, :string end end 

但在开发过程中,我意识到柱不是必需的并且已经完成

 rake db:migrate:down VERSION=20140731141350 

现在我留下了一个未使用的20140804125449_add_salt_colum_to_users.rb迁移文件。

删除还是不?

您永远不应该更改旧的迁移。 如果您意识到给定列是不必要的,请编写新的迁移以将其删除。

这样做的原因是您可以在任何开发点恢复数据库架构。 如果您在团队中工作,那么您删除迁移的事实不会改变您的队友的模式。 更重要的是,他们现在没有迁移回复!

看看有关rails迁移的博客文章 。 如本文所述:

当我启动一个新环境时,运行rake db:schema:load会容易得多。 迁移是多余的。 所有这些数据都在模式文件中。

因此,如果没有其他迁移依赖于此迁移,我建议您删除此迁移。

永远不要删除或编辑旧的迁移! 您可以为与团队合作的应用程序带来很多伤害,甚至可以单独使用。