[英]rake:db rollback does not delete the migration?
我有主菜和快照。 進入has_many快照。 我忘記了將外鍵添加到快照中。 所以我后來添加了遷移:
$ rails generate migration add_snapshot_ref_to_entrees snapshot:references
遷移文件如下所示:
class AddSnapshotRefToEntrees < ActiveRecord::Migration[5.0]
def change
add_reference :entrees, :snapshot, foreign_key: true
end
end
這沒有做我想要的。 它向主目錄添加了一個snapshot_id,而不是向快照添加了entree_id。
所以我運行回滾:
bundle exec rake db:rollback
它將正確地從schema.rb中移出以下內容:
add_foreign_key "entrees", "snapshots"
並且還可以正確回滾數據庫本身。 但是遷移文件仍保留在db / migrate中。 我是否應該自己刪除此文件或未完成其工作?
是的,您需要手動刪除此文件。 關於您的關聯,應如下所示:
class AddSnapshotRefToEntrees < ActiveRecord::Migration[5.0]
def change
add_reference :snapshots, :entree, foreign_key: true
end
end
不應該這樣
rails destroy migration add_snapshot_ref_to_entrees
為了回滾特定的遷移,請使用:
耙db:migrate:down VERSION = YOUR_MIGRATION_VERSION
例如:
耙db:migrate:down VERSION = 20100905201547
要查找所有遷移的版本,可以使用以下命令:
耙db:migrate:status
rake db:migrate:down和回滾在數據庫標簽上起作用,它沒有從db / migrate中刪除文件。
您需要直接從db / migrate文件夾中刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.