我在我的Rails應用程序4相關的遷移:Rails的遷移問題
首先3遷移創建一個表中的每個在self.up和和丟棄它們在各自的self.down方法。
第4次遷移運行一個rake任務,將數據加載到全部三個(self.up)中。我正在考慮在這個遷移的self.down中放入什麼來從3個表中刪除行?
我做錯了嗎?可能應該創建一個遷移,我創建3個表並將數據加載到self.up中,然後將所有三個表都放在self.down方法中?
我在我的Rails應用程序4相關的遷移:Rails的遷移問題
首先3遷移創建一個表中的每個在self.up和和丟棄它們在各自的self.down方法。
第4次遷移運行一個rake任務,將數據加載到全部三個(self.up)中。我正在考慮在這個遷移的self.down中放入什麼來從3個表中刪除行?
我做錯了嗎?可能應該創建一個遷移,我創建3個表並將數據加載到self.up中,然後將所有三個表都放在self.down方法中?
這是錯誤的!
遷移應僅用於遷移數據型號不是你數據使用。
Rails 2.3.4增加了'種子'。這是db/seeds.rb中的一個文件,其中包含用於「引導」數據庫的ruby代碼。這是爲類別,查找表或用戶帳戶等數據庫創建半靜態內容的好方法。
然後,您可以用一個簡單的rake任務
rake db:seed
這樣做並沒有真正的對錯方法。根據您所做的事情,第四次遷移應該只是以其下行方法卸載數據。每個向下應該只撤消向上的動作。
在創建表的遷移中加載數據當然不是必需的。如果您有3個表創建has_many或belongs_to關係,那麼將數據置於單獨的遷移中是有意義的,以便您可以創建關係,然後在數據加載中使用它們。
除此之外,如果你有一個rake任務來加載數據,爲什麼還要執行rake任務的遷移呢?只需運行安裝的rake任務部分,或者使用rake任務來加載或卸載一些演示數據即可。
通常我會保持我的遷移模式爲重點,並且我會將任何數據加載到我獨立調用的耙子任務中。
__All的是,除了,如果你有一個rake任務加載數據,爲什麼與運行瑞克任務遷移打擾加載種子數據?只需運行安裝的rake task部分,或者使用rake任務來加載或卸載一些演示數據.__ =>主要是爲了讓團隊中的其他開發人員更輕鬆。所以他們不必記得運行一個rake任務的更多步驟。 感謝您的指導。我一直在想,他們應該一起去。現在我可以在self.down中刪除第4次遷移中的行。 – 2009-08-03 13:04:03
是的,我同意並感謝您的答案。那時我正在使用rails 2.2.2。我最近聽說過db:seed,並在我的項目中使用它。使用遷移加載數據對我來說似乎不合適。 – 2009-10-03 22:38:20