2012-10-03 50 views
1

說我創建了一個分支(new_branch)。在該分支中,創建了一個遷移(migration_1)。如果以後從其他分支遷移已經運行,從Git分支遷移如何在Heroku上運行?

後來,我切換回master。然後我創建一個遷移(migration_2),推送到Heroku,並在Heroku上運行遷移。

後來還是我把new_branch合併成master,然後把master推到Heroku。

當我嘗試在Heroku上運行遷移時,不會跳過migration_1而不運行,因爲它是在migration_2之前創建的,它已經運行了嗎?

回答

6

每個遷移都附有遷移時間戳。成功應用的遷移列表存儲在Rails應用程序中的模式表中。

當您運行migration_2時,此條目將被添加到數據庫中。當合並migration_1時,Rails將檢測到尚未應用的更改,因爲該模式表中缺少條目,並且將運行它。

+0

所以我已經標記爲答案,但我有一個問題。這個答案如何與[this one]中的答案兼容(http://stackoverflow.com/questions/2979059/is-the-version-number-in-rails-schema-rb-used-for-any-anything)?在那裏,共識是假設模式版本號之前的所有遷移已經運行。 – ben

+0

http://guides.rubyonrails.org/migrations.html#what-s-in-a-name似乎同意西蒙娜的回答。 –