2014-02-18 68 views
0

我運行一個像這樣的遷移:遷移文件更新Schema.rb不能反映文件

class CreatePages < ActiveRecord::Migration 
    def change 
    create_table :pages do |t| 
     t.string :name 
     t.string :permalink 
     t.integer :position 
     t.boolean :visible 

     t.timestamps 
    end 
end 
end 

然後我想我忘了設定布爾默認值,所以我回去遷移文件並添加以下內容:

t.boolean :visible, :default => false 

然後再運行rake db:migrate。但是,schema.rb文件不會更新。我之前已經運行過遷移了很長時間,所以無法回滾並重新進行遷移。 我知道我不應該直接更新架構文件。 任何人都可以幫助我根據我在遷移文件中所做的更改來更新schema.rb文件。

謝謝

回答

0

您必須添加新遷移以更改列的默認值。

this post

+0

有沒有一種方法,我可以編輯原有的遷移文件,而無需增加新的遷移? – phanatuan

+0

不,您必須編寫新的遷移或回滾以前的遷移,然後編輯並重新運行遷移。 –