2016-03-04 63 views
0

我的问题非常多与此相关的一个Should I delete migration after rollback迁移状态在哪里保存?

我有我的原迁移文件20140731141350_create_users.rb

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :email 
     t.string :password 

     t.timestamps 
    end 
    end 
end 

为了这,我需要添加一个列,所以我创建的迁移 20140804125449_add_salt_colum_to_users.rb

class AddSaltColumToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :salt, :string 
    end 
end 

但都灵3G发展我意识到列没有必要 并与未使用 20140804125449_add_salt_colum_to_users.rb迁移文件执行

rake db:migrate:down VERSION=20140731141350 

现在我离开了。

我的问题是如果我不删除这个迁移文件,这个迁移的这个“下”状态保存在哪里?迁移文件说add_column,所以如果我运行一个数据库:再次迁移它将如何知道这个特定的文件已迁移?

回答

1

db:migrate:downdb:rollback是相似的。 down将数据库恢复到指定的版本,回滚到以前的版本。要检查是迁移应用Rails有所谓的“schema_migrations”存储时间戳所有应用迁移特定的表,所以基本上当你运行db:migrate:down轨恢复迁移和schema_migrations删除行。所以,如果你不删除迁移文件 - 轨道将应用在未来db:migrate

+0

所以,如果我跑'分贝:migrate'我总是要遵循'分贝:迁移:down'在这个特定迁移? – user4584963

+0

让我解释一下这样的迁移,就像是十几张纸。例如,你有25页,您决定取消第18页。所以,你需要7页(19..25 - 命令分贝:迁移:向下),距离目前的状态是18页。然后你销毁第18页(删除文件)并放回7页。结果你再也没有第18页了。 – jalkoby