4.1 Rolling Back
A common task is to rollback the last migration, for example if you made a mistake in it and wish to correct it. Rather than tracking down the version number associated with the previous migration you can run
rake db:rollback |
This will run the down method from the latest migration. If you need to undo several migrations you can provide a STEP parameter:
rake db:rollback STEP=3 |
will run the down method from the last 3 migrations.
The db:migrate:redo task is a shortcut for doing a rollback and then migrating back up again. As with the db:rollback task you can use the STEP parameter if you need to go more than one version back, for example
rake db:migrate:redo STEP=3 |
Neither of these Rake tasks do anything you could not do with db:migrate, they are simply more convenient since you do not need to explicitly specify the version to migrate to.
Lastly, the db:reset task will drop the database, recreate it and load the current schema into it.
This is not the same as running all the migrations – see the section on schema.rb.
4.2 Being Specific
If you need to run a specific migration up or down the db:migrate:up and db:migrate:down tasks will do that. Just specify the appropriate version and the corresponding migration will have its up or down method invoked, for example
rake db:migrate:up VERSION=20080906120000 |
will run the up method from the 20080906120000 migration. These tasks check whether the migration has already run, so for example db:migrate:up VERSION=20080906120000 will do nothing if Active Record believes that 20080906120000 has already been run.