2013-01-09 37 views
1

我有一個表定義如下:如何更改遷移字段的大小?

def self.up 
create_table "equipes", :primary_key => "equipe_id", :force => true do |t| 
    t.string "equipe_nom",     :limit => 30, :null => false 
    t.string "equipe_nom_pseudo", :limit => 8, :null => false 
    t.string "equipe_manager",  :limit => 40 
    t.string "equipe_telephone_1", :limit => 22 
    t.string "equipe_adresse_email", :limit => 50 
    t.string "equipe_responsable", :limit => 50 

    t.timestamps 
end 

我想從場30「equipe_nom」的限制更改爲150

什麼是做到這一點的最好方法是什麼?

我可以使用RAKE G MIGRATION ....嗎?

感謝

回答

2

首先:不要用rails命令混淆rake命令。 Rake是一個將運行比make命令更先進的任務的命令。 rails是由rails框架提供的命令,例如,創建應用程序,生成遷移等。您將通過在沒有參數的終端中輸入rails來獲得所有rails命令及其效果的列表。 rails g migration migrationname將爲您生成遷移。閱讀更多關於遷移in this rails guide

有了這樣的方式,有兩種可能解決你的問題:

  • 如果您之前已經運行此遷移,這是你最後的遷移,您將需要運行rake db:rollback,然後改變上面顯示的遷移文件中的值,保存它,然後再次運行rake db:migrate。這將首先反轉上次遷移(在這種情況下,請刪除表「equipe」),然後再次使用您的更改運行它。
  • 如果這是一個較老的遷移,您可以通過執行rails g migration change_equipe_nom_to_limit_150來創建一個新遷移。看看它創建的文件。 def up內寫:change_column :equipes, :equipe_nom, :string, :limit => 150。保存文件,運行rake db:migrate

如果您不確定哪種情況適用,請執行第二個。它會一直工作。

+0

非常感謝您的答案查爾斯。我已經注意到rails和rake之間的錯誤,但我理解其中的每一個。我已經測試過你的最後一個解決方案,並且工作正常不幸的是,rails遷移指南沒有提供這種遷移的例子。 – Marc