2015-06-24 17 views
1

我一直在閱讀軌道中的活動記錄遷移。我們很可能會在大多數時間進行可逆遷移,但我不明白做出不可逆轉遷移的重點是什麼?任何人都可以舉例嗎?讓它們不可逆轉的好處是什麼?Active記錄中不可逆遷移的好處?

這是我從欄杆指南閱讀:

class ChangeProductsPrice < ActiveRecord::Migration 
    def change 
    reversible do |dir| 
     change_table :products do |t| 
     dir.up { t.change :price, :string } 
     dir.down { t.change :price, :integer } 
     end 
    end 
    end 
end 

回答

2

假設你有一個在你的表addresses命名爲zipcode列,它的類型是目前integer,並希望將其更改爲string。現在

,這是很有可能的數據類型改變從integerstring,但改變一個string回到整數不會總是可能的,所以我們不能恢復這個遷移。

def self.up 
    change_column :address, :zipcode, :string 
end 

現在,如果你這樣做rake db:migrate,它會正常工作,但是當你要恢復它,你會得到以下錯誤:

-- Rake aborted! -- ActiveRecord::IrreversibleMigration


And what's the benefit of making them irreversible?

其實,我們不傾向於使它們不可逆轉;它恰好是不可逆轉的。就我個人而言,我會一直保持可逆性,因爲它們非常靈活。