我有主菜和快照。主菜有很多快照。我忘了将外键添加到快照中。所以后来我添加了迁移:
%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中。我想我自己删除它还是没有完成它的工作?
答案 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文件夹中删除。