2013-10-05 47 views
1

嗨,大家好,我想知道如果您嘗試回滾遷移以更新模式,是否有辦法不丟失數據?例如,在運行rake db:migrate之後,插入幾輪數據之後,您想要在模式中添加一個新屬性。如何在不丟失原始數據的情況下更新數據庫模式

所以我的問題是如何添加新屬性而不會丟失我以前的記錄?有可能這樣做嗎?因爲所有這些,我只是通過運行rake db:rollback STEP = ...並丟失了我生成的所有數據。就是想。

感謝您的幫助 來源: BC2

+0

目前尚不清楚你要求什麼。你想回滾?你想生成一個當前的模式文件?你想達到什麼目的? – Dogweather

回答

3

,如果你有一個現有的表,並希望在現有表中添加新屬性,然後簡單寫入獨立遷移。
例如:您有屬性名稱的學生桌,roll_no ...現在ü要增加學生表「地址」屬性

$ rails generate migration AddAddressToStudents address:string 

會產生

class AddAddressToStudents < ActiveRecord::Migration 
     def change 
     add_column :students, :address, :string 
     end 
    end 

然後只需運行「rake db:migrate」

+0

感謝您的幫助=) – BC2

2

你不需要回滾到更新架構。只需編寫一個新的遷移來更新現有的表。

例如,將字段添加到您的用戶表,不破壞任何東西,寫遷移,如:

class AddFieldsToUser < ActiveRecord::Migration 
    def change 
    change_table :users do |t| 
     t.date :birthday   # add new field 
     t.remove :first   # remove a field 
     t.rename :gender, :sex # rename a field  

    end 

    end 
end 

這裏看到更多的信息:http://guides.rubyonrails.org/migrations.html#changing-tables

相關問題