簡體   English   中英

rake:db rollback是否不刪除遷移?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM