2012-10-10 32 views
5

我有一個Rails應用程序,其中有一個特定的表,其中的數據,甚至結構動態生成的軌道和紅寶石之外。這是在設計上,它是一個特殊的表格,其中的結構是從其餘的活動記錄和關係中獨立出來的。在它上面工作的模型也是原子的。再次全部由設計和有目的的。我不希望此表具有特定的結構,這意味着每次表初始化時列名稱和列數都可以更改。如果表格結構發生變化,我可以管理對模型類的更改。Rails無移植創建表

我的問題是,rails的遷移過程似乎妨礙了我的工作,我不想在遷移和回滾之間來回切換,只是爲了得到這個表的重置狀態。

我正在尋找的行爲實際上每次我爲這個表「生成」數據時,我想刪除可能已存在的表(在所有環境中:生產,開發和測試)。

是否有明確的方法來繞過遷移過程?或者創建一個獨立於應用程序中其他遷移序列的特殊遷移?

整個數據庫不是一次性的,但是這個表是。

有關如何實現此行爲的想法?

Rails 3中,PostgreSQL數據庫,Git版本控制,Heroku的託管

回答

2

我認爲簡單的答案是「不使用遷移」 - 他們的目的是幫助你比較正常延長原本靜態的數據庫模式。除了生成/執行數據庫的數據定義語言(DDL)之外,遷移還有很多功能 - 它知道如何前後移動,通過源代碼(schema.rb)與數據(在schema_migrations表中)之間的鏈接知道如何執行確定哪些遷移需要運行,等等。所有你需要的是執行DDL的部分(畢竟,這只是一種SQL)。

而且至少有一部分是here in the TableDefinition API。您可能需要的所有基礎架構似乎都存在。

+0

做導軌用於構建表,類似的命令我猜真的很簡單。謝謝。 –

2

您可以將該字段設置爲包含SQL rake任務(這聽起來像你正在使用它作爲什麼)/什麼用rake db:seed

+0

這很有效,我只是把所有的代碼放到一個rake任務中,我可以根據需要隨時更改它。謝謝。 –