Ruby on Rails:如何使用rake db恢复迁移:migrate?

安装devise模型后,我得到了这个。

class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.database_authenticatable :null => false t.recoverable t.rememberable t.trackable # t.encryptable # t.confirmable # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both # t.token_authenticatable t.timestamps end add_index :users, :email, :unique => true add_index :users, :reset_password_token, :unique => true # add_index :users, :confirmation_token, :unique => true # add_index :users, :unlock_token, :unique => true # add_index :users, :authentication_token, :unique => true end def self.down drop_table :users end end 

现在,如果我做耙分贝:迁移用户表将被创build。

我怎样才能恢复这种迁移,即如何可以再次使用耙子删除用户表?

 rake db:migrate:down VERSION=<version> 

其中<version>是您要恢复的迁移文件的版本号。

例如。 如果要恢复文件名为3846656238_create_users.rb的迁移

rake db:migrate:down VERSION = 3846656238

只要运行这个命令:

 rake db:rollback 

我相信有三个选项可用于恢复迁移(它们也重叠):

  1. 减less最近的迁移:

    rake db:migrate:down #仅Rails 2。

  2. 减less最近的迁移次数(n)

    rake db:rollback STEP=n

  3. 向下滚动以前的特定版本:

    $ rake db:migrate:down VERSION=nnn #Rails 3(也提供版本号)。

版本号意味着SHA(安全哈希algorithm)的提交这是一个很长的hex数字,看起来像886af3194768917c78e …你可以通过做git log

您可以使用rake -T db:来查看这些命令(及其他)以及它们的描述rake -T db: for rails 3.2包括:

 rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false) rake db:migrate:status # Display status of migrations rake db:rollback # Rolls the schema back to the previous version (specify steps w/ STEP=n) 

您可以执行回滚,并指定最后一次迁移将回滚多less,例如

 rake db:rollback STEP=3 

为最后3次迁移。

作为一个新的程序员(或其他新的程序员)

rake db:rollback工作大约一半的时间。 我从那里开始

如果没有, rake db:migrate:down VERSION=3846656238

插入VERSION,以获得您想要恢复的迁移文件的版本号。

 rake db:migrate:redo 

它将撤销并重新应用最后的迁移。

对于rails 5,我们可以使用rails command instead of rake

 rails db:migrate:down VERSION=<version> 

rails db:migrate:down VERSION = 20170330090327

在terminal中运行这个命令:

 rake db:migrate:status 

要么

 bundle exec rake db:migrate:status 

它显示了我们之前运行的所有迁移的状态,迁移ID,迁移名称。 select您的迁移ID(即您的版本号),然后将该ID放入版本= ,,,后面的命令中,然后按Enter键

 bundle exec rake db:migrate:down VERSION=