rake:db rollback不会删除迁移吗?

时间:2018-01-09 23:30:21

标签: ruby-on-rails

我有主菜和快照。主菜有很多快照。我忘了将外键添加到快照中。所以后来我添加了迁移:

%s/m_/m/gc 

迁移文件如下所示:

$ rails generate migration add_snapshot_ref_to_entrees snapshot:references

这不符合我的要求。它为主菜添加了一个snapshot_id,而不是为快照添加一个entree_id。

所以我运行回滚:

class AddSnapshotRefToEntrees < ActiveRecord::Migration[5.0]
  def change
    add_reference :entrees, :snapshot, foreign_key: true
  end
end

它正确地从schema.rb移动了以下内容:

bundle exec rake db:rollback

并正确回滚数据库本身。但迁移文件仍保留在db / migrate中。我想我自己删除它还是没有完成它的工作?

4 个答案:

答案 0 :(得分:0)

是的,您需要手动删除此文件 。关于你的关联,它应该如下:

class AddSnapshotRefToEntrees < ActiveRecord::Migration[5.0]
  def change
    add_reference :snapshots, :entree, foreign_key: true
  end
end

答案 1 :(得分:0)

它不应该。

rails destroy migration add_snapshot_ref_to_entrees

答案 2 :(得分:0)

为了回滚特定的迁移用途:

  

rake db:migrate:down VERSION = YOUR_MIGRATION_VERSION

例如:

  

rake db:migrate:down VERSION = 20100905201547

要查找所有迁移的版本,可以使用以下命令:

  

rake db:migrate:status

答案 3 :(得分:0)

rake db:migrate:down和rollback在数据库标签上工作,它不会从db / migrate中删除文件。

您需要从db / migrate文件夹中删除。