2013-10-22 83 views
0

我試圖重新使用以前用於其他內容的表。所以我創建了一個遷移來刪除表格並從新列開始。然而,我遇到了一個問題,如果我回滾遷移並再次運行它,我會收到錯誤,因爲表已經被刪除。我怎樣才能解決這個問題?Rails遷移到刪除數據庫(僅當它尚未被刪除時)

class CreateNewTeams < ActiveRecord::Migration 
    def self.up 
    drop_table :teams 
    create_table :teams do |f| 
     # ... 
    end 
    end 

    def self.down 
    drop_table :teams 
    end 
end 

回答

0

force選項是爲創建表(如果存在)創建的。看到docs

class CreateNewTeams < ActiveRecord::Migration 
    def self.up 
    create_table :teams, :force => true do |f| 
     # new columns 
    end 
    end 

    def self.down 
    create_table :teams, :force => true do |f| 
     # old columns 
    end 
    end 
end 
+0

啊,謝謝!我想知道那是什麼標誌。 – Andrew

0

你應該讓數據庫保持在遷移前的狀態。所以在你的情況下,

class CreateNewTeams < ActiveRecord::Migration 
    def self.up 
    drop_table :teams 
    create_table :teams do |f| 
     # new purpose 
    end 
    end 

    def self.down 
    drop_table :teams 
    create_table :teams do |f| 
     # old purpose 
    end 
    end 
end 

如果你需要改變是重命名一些列,那麼不刪除表。如果您正在使用廣泛應用的應用程序,則部署此更改將導致停機。請牢記這一點

+0

啊好點,我不應該在我的回滾丟掉表。 – Andrew