2010-08-15 22 views
2

在Rails應用程序開發的早期階段,我更願意直接修改遷移文件以向我的表(模型)添加新列(字段),而不是將遷移堆疊到改變字段和/或做小改動。Rails:在早期開發階段改變遷移

Rails有可能嗎?

回答

3

乾淨的解決方案,從維傑開發的解決方案驅動是創建一個rake任務:

namespace :db do 
    desc "Drops, recreates and seeds the database." 
    task :reload => [:drop, :create, :migrate, :seed] do 
    Rake::Task['db:drop'].invoke 
    Rake::Task['db:create'].invoke 
    Rake::Task['db:migrate'].invoke 
    Rake::Task['db:seed'].invoke 
    end 
end 
9

假設你這樣做的事實表明它是可能的!

+0

你讓我發笑:) – 2010-08-15 15:42:08

8

我運行以下命令來解決此問題。把它保存在一個腳本中,你準備好了!當然,這假定丟失數據是好的。在任何情況下加載燈具都很容易添加到此腳本中。

#!/bin/sh 
rake db:drop 
rake db:create 
rake db:migrate --trace 

PS:我的朋友是誰給了我這個想法調用該腳本rake_dance :)

+0

這就是爲我工作的。謝謝。 – 2010-08-16 01:36:10

0

我建議採用這種方法時(因爲它允許數據庫下探至後快速重新創建樣本數據的應用程序中使用夾具重建)。另一種選擇是http://datamapper.org/(不需要遷移)。

0

發現我們可以組合到一個命令的一切:

rake db:drop db:create db:migrate db:seed 

使用外殼aliase使它成爲快照以重做所有舊的遷移。

+1

這或多或少是rake db:setup所做的。 – ybakos 2011-07-06 23:19:23

1

分貝:重置做奧馬爾建議。