2012-12-18 116 views
2

我是一個新手在rails和它的一個很棒的平臺。Rails - 如何從模型創建數據庫表(我沒有遷移腳本)

我創建了一個應用程序,但刪除了所有的遷移腳本。

我想用我現有的模型中的表創建數據庫。

我找不到它在網絡上,我敢肯定,這可能是做像任何其他平臺(Java的休眠等)

命令導軌產生......只創建一個選項沒有列的表,但我在現有的模型中有列。所以我該怎麼做?

謝謝!

回答

2

如果我正確理解你的問題,實際上沒有辦法從ActiveRecord模型類構建數據庫表 - 最好將ActiveRecord模型看作更多不同風格的關係數據庫和Ruby對象之間的映射。換句話說,ActiveRecord模型抽象出數據庫的細節,以便成爲獨立於數據庫的數據庫。他們使你的數據庫數據更容易在Ruby中訪問。這樣做時,他們沒有權力構建你的表格。把它們想象成非常漂亮的getter和setter,而不是綁定到數據庫。

這正是爲什麼遷移存在 - 它們包含數據庫特定的東西。它們基本上包含了模型定義的「另一半」 - 大多數應用程序級別的東西(例如關係,不存在於MySQL中,對嗎?它們是ActiveRecord約定)在您的模型中定義,但是,例如,如果你想在你的Foo模型中有一個字符串,你可以在你的遷移中定義這個字符串,並且在你的模型中可以使用適當的getter和setter來讓你玩這個字符串。

tl; dr:您需要您的遷移。它們存在於Rails中的事實是一個有意設計的決定,將Ruby模型的一半與數據庫的一半分開。

6

如果您意外地清理了您的模型並且沒有任何遷移,您仍然可以通過運行rake db:migrate並使用它來生成db/schema.rb文件。它應該反映數據庫的當前狀態,不管你做了什麼。

如果您使用其中的重要部分創建遷移,您會注意到格式非常相似,您將能夠在其他系統上覆制該配置。

儘管如此,這還是有點粗暴的做法。每個模型都應該有相關的遷移。一般來說,這些都不會被刪除,只有在嚴格需要的情況下才會被修改,從而保留了模式如何演變成最終狀態的歷史。