2012-06-24 47 views
0

當我讀Rails的書時,他們每次創建一個新的數據庫時,總是遵循db:migrateRuby on Rails:db:migrate的用途

rails generate scaffold school 
rake db:migrate 

在控制檯視圖中,我在第一行看到,Rails創建了一些文件,沒有問題。但在第二行,我看到Rails並沒有真正改變任何東西。我查看了Rails幾乎創建的一些文件,並且沒有看到任何更改。

那麼,第2行的目的是什麼,請告訴我。

謝謝:)

回答

3

耙將遷移到你的數據庫的變化。它實際上改變了數據庫模式以匹配您以前生成的腳手架模型。

沒有它,你不會有一個表來寫入你的對象。或者如果改變型號,表格可能與您的型號不同,導致錯誤。

當您生成模型(或腳手架)時,會在您的db/migration目錄中創建一個遷移文件。這是一個純文本文件,你可以手動創建,如果你想。這是關於數據庫的rails中迭代開發的工具。每次遷移都會爲系統添加一些更改。當您運行rake db:migrate時,您的數據庫將根據給定的遷移進行更新。在分佈式開發的情況下,這是一個方便的工具,當一個程序員可以從存儲庫檢出代碼,並且可以在他自己的開發數據庫上運行這些遷移。

1

db:migrate,是告訴軌道用新更改更新數據庫的命令。認爲它是這樣的

當你說rails generate scaffold軌道將生成文件,如模型,控制器等。它創建一個文件在db/migrate有SQL腳本來更新數據庫。

例如:如果您運行rails generate scaffold User name:string,那麼你將需要一個表稱爲與列「名」的數據庫用戶,即SQL腳本將根據數據庫生成/遷移文件夾

db:migrate,命令,你是告訴軌到新的SQL腳本遷移到數據庫,在上述情況下,如果你運行rake -T,從您的Rails應用程序根目錄,將創建「用戶」表

,你可以看到所有的耙任務

HTH :)