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 
我相信有三个选项可用于恢复迁移(它们也重叠):
- 
减less最近的迁移: rake db:migrate:down#仅Rails 2。
- 
减less最近的迁移次数(n) : rake db:rollback STEP=n
- 
向下滚动到以前的特定版本: $ 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=