2014-06-20 56 views
1

我現在的遷移文件爲什麼直接更改遷移文件不會更改模式文件?

class CreateMovies < ActiveRecord::Migration 
    def up 
    create_table :movies, :force => true do |t| 
     t.string :title 
     t.string :rating 
     t.text :description 
     t.datetime :release_date 
     # Add fields that let Rails automatically keep track 
     # of when movies are added or modified: 
     t.timestamps 
    end 
    end 

    def down 
    drop_table :movies 
    end 
end 

我試圖改變RELEASE_DATE類型爲整數。所以我直接將文件更改爲

class CreateMovies < ActiveRecord::Migration 
    def up 
    create_table :movies, :force => true do |t| 
     t.string :title 
     t.string :rating 
     t.text :description 
     t.integer :release_date 
     # Add fields that let Rails automatically keep track 
     # of when movies are added or modified: 
     t.timestamps 
    end 
    end 

    def down 
    drop_table :movies 
    end 
end 

請注意,release_date類型已被更改。但經過我跑

束EXEC耙分貝:遷移

它仍然像以前一樣產生相同的架構文件。我感到很困惑。

回答

3

這可能是因爲你已經運行了你的遷移。所以,你想改變它之前,你應該先回滾它:

bundle exec rake db:rollback 

,那麼你應該修改並再次運行:

bundle exec rake db:migrate 
+0

正是我想要的答案! – new2cpp

+2

假設它是最後一個'bundle exec rake db:migrate:redo'將回滾並重新遷移上次的遷移 –

0

下來將刪除該表

rake db:migrate:down VERSION = file_name(不包括擴展名)

將與新的變化

rake db:migrate:up VERSION=file_name(exclude extension) 
1

創造至於下降和加大了移民的選擇,你可以做一個新的遷移更改列類型。

class ChangeMoviesReleaseTypeToInteger < ActiveRecord::Migration 
    def up 
    change_column :movies, :release_date, :integer 
    end 

    def down 
    change_column :movies, :release_date, :datetime 
    end 
end 

正如一個側面說明,release_date是一個整數字段一個混亂的名字 - 大多數人會想到它是一個日期時間,你原本。

相關問題