2015-12-11 40 views
0

我正在接管一個Rails項目,該項目有一個已填充的schema.rb文件,但奇怪的是它沒有遷移文件夾,也沒有遷移文件。我對這門語言很陌生,但是不會根據遷移文件創建模式文件嗎?如果我運行「rake db:migrate」,模式文件中的現有表將被刪除。這是否意味着以前的開發人員手動編輯了模式文件?安裝Ruby/Rails時可以刪除遷移文件嗎?Rails應用程序有schema.rb但沒有遷移文件

此外,日誌顯示此錯誤:

PG::UndefinedTable: ERROR: relation "nameoftable" does not exist 

,這都與事實不存在遷移文件呢?

我正在創建遷移文件,但我想確認我正確理解這一點。

在此先感謝。

回答

0

doesn't the schema file get created based on the migration files?

是的,但他們可以獨立生存。我可以創建我的模式並使用多次遷移對其進行修改,然後在將項目發送給您之前刪除遷移。

Rails將仍然開始良好,因爲他所關心的是schema.rb文件的內容。

如果你想構建你的數據庫,你應該從schema.rb而不是使用rake db:migrate。這是錯誤的方法,因爲在一個非常大而且壽命長的Rails項目中,您不能保證遷移能夠從第一個到最終都能運行。

的方式將設置一個數據庫使用命令

rake db:schema:load 

然後從那裏你可以向前移動在未來創造新的遷移。您並不需要舊的遷移文件。

+0

謝謝你,我會更新我的問題,發佈命令的結果。問題是,Rails應用程序部署在Heroku上,是否需要推送我的更改以查看此命令是否影響修復日誌中發現的錯誤,或者我可以在推送之前以某種方式在本地進行測試?我正在研究創建一個分段/開發環境,但有一個快速的本地測試會更容易。 非常抱歉,如果這一切都太基本了,但我一直在爲客戶端開發,只是被拉進了這個! – user1210182

+0

您可以重新創建數據庫,在本地測試更改並稍後推送它們。 –

+0

我該如何在本地進行測試?到目前爲止,我一直在prod域名「appname.herokuapp.com」上測試,我在heroku上找到了這個:https://devcenter.heroku.com/articles/multiple-environments,但我想知道是否有更簡單的方法通過網絡查看相同的網站,但在測試環境中。 – user1210182

相關問題