Bird
Raised Fist0
Ruby on Railsframework~10 mins

Running and rolling back migrations in Ruby on Rails - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Running and rolling back migrations
Start: Migration files exist
↓
Run migration command
↓
Rails applies migrations in order
↓
Database schema updated
↓
If rollback needed?
No→End
Yes↓
Run rollback command
↓
Rails reverts last migration
↓
Database schema reverted
↓
End
This flow shows how Rails applies migrations to update the database schema and how it can revert changes by rolling back the last migration.
Execution Sample
Ruby on Rails
rails db:migrate
rails db:rollback
Run migrations to update the database, then rollback the last migration to revert changes.
Execution Table
StepCommandActionMigration StatusDatabase Schema State
1rails db:migrateApply pending migrationsMigration 001 appliedSchema updated with migration 001 changes
2rails db:migrateApply next pending migrationMigration 002 appliedSchema updated with migration 002 changes
3rails db:rollbackRevert last migrationMigration 002 rolled backSchema reverted to state after migration 001
4rails db:rollbackRevert last migrationMigration 001 rolled backSchema reverted to initial state
5rails db:rollbackNo migrations left to rollbackNo changeSchema remains at initial state
💡 No more migrations to rollback, database schema is at initial state
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
Migration StatusNone applied001 applied002 applied001 appliedNone appliedNone applied
Database Schema StateInitialUpdated with 001Updated with 002Updated with 001InitialInitial
Key Moments - 2 Insights
Why does rolling back twice revert the schema to the initial state?
Because each rollback reverses the last applied migration step-by-step, so rolling back twice removes both migrations, returning the schema to its original state as shown in execution_table rows 3 and 4.
What happens if you run rollback when no migrations are applied?
No changes occur because there are no migrations to revert, as shown in execution_table row 5 where the schema stays at the initial state.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the migration status after step 2?
AMigration 001 rolled back
BMigration 002 applied
CNo migrations applied
DMigration 002 rolled back
💡 Hint
Check the 'Migration Status' column at step 2 in the execution_table.
At which step does the database schema revert to the initial state?
AStep 3
BStep 2
CStep 4
DStep 1
💡 Hint
Look at the 'Database Schema State' column in execution_table rows for when it shows 'Initial'.
If you run 'rails db:migrate' after step 4, what will happen?
AMigrations 001 and 002 will be applied again
BNo migrations will run because all are applied
COnly migration 002 will be applied
DOnly migration 001 will be applied
💡 Hint
After step 4, no migrations are applied, so running migrate applies all pending migrations again.
Concept Snapshot
rails db:migrate: Applies all pending migrations in order to update the database schema.
rails db:rollback: Reverts the last applied migration, stepping back the schema.
Multiple rollbacks undo migrations one by one.
If no migrations applied, rollback does nothing.
Use these commands to manage schema changes safely.
Full Transcript
This visual execution shows how Rails runs and rolls back migrations. First, running 'rails db:migrate' applies migrations in order, updating the database schema step-by-step. Each migration changes the schema, tracked in the migration status. If you need to undo changes, 'rails db:rollback' reverts the last migration, restoring the schema to the previous state. Rolling back multiple times removes migrations one by one until the schema returns to its initial state. If no migrations are applied, rollback does nothing. This process helps manage database changes safely and predictably.

Practice

(1/5)
1. What does running a migration in Rails do?
easy
A. Applies changes to the database schema step-by-step
B. Deletes the entire database
C. Creates a backup of the database
D. Restarts the Rails server

Solution

  1. Step 1: Understand migration purpose

    Migrations are designed to change the database schema in a controlled way.
  2. Step 2: Identify what running migration does

    Running a migration applies these schema changes step-by-step to the database.
  3. Final Answer:

    Applies changes to the database schema step-by-step -> Option A
  4. Quick Check:

    Running migration = apply schema changes [OK]
Hint: Running migration updates database schema stepwise [OK]
Common Mistakes:
  • Thinking it deletes the database
  • Confusing migration with backup
  • Assuming it restarts the server
2. Which command correctly rolls back the last migration in Rails?
easy
A. rails db:reset
B. rails db:rollback
C. rails db:migrate:down
D. rails db:rollback STEP=2

Solution

  1. Step 1: Recall rollback command syntax

    The basic command to undo the last migration is rails db:rollback.
  2. Step 2: Analyze other options

    rails db:migrate:down requires specifying a version, rails db:reset resets the whole database, and rails db:rollback STEP=2 rolls back two steps, not one.
  3. Final Answer:

    rails db:rollback -> Option B
  4. Quick Check:

    Rollback last migration = rails db:rollback [OK]
Hint: Rollback last migration uses rails db:rollback [OK]
Common Mistakes:
  • Using db:reset which resets entire DB
  • Using rollback with STEP=2 to undo one migration
  • Confusing migrate:down without version
3. Given these commands run in order:
rails db:migrate
rails db:migrate
rails db:rollback STEP=2
What is the state of the database migrations?
medium
A. Only the first migration is applied
B. All migrations are applied
C. No migrations are applied
D. Only the last migration is applied

Solution

  1. Step 1: Understand the commands run

    Two migrations are applied by running rails db:migrate twice, then rollback with STEP=2 undoes both.
  2. Step 2: Determine final migration state

    Rolling back two steps removes both migrations, so no migrations remain applied.
  3. Final Answer:

    No migrations are applied -> Option C
  4. Quick Check:

    Rollback STEP=2 undoes two migrations [OK]
Hint: Rollback STEP=2 undoes last two migrations [OK]
Common Mistakes:
  • Assuming rollback STEP=2 only undoes one migration
  • Thinking migrations remain applied after rollback
  • Confusing migrate command effects
4. You run rails db:rollback STEP=3 but get an error saying there are not enough migrations to rollback. What is the likely cause?
medium
A. The STEP option is not supported
B. Rollback only works with STEP=1
C. You need to restart the Rails server first
D. There are fewer than 3 migrations applied

Solution

  1. Step 1: Understand rollback STEP behavior

    Rollback with STEP=n tries to undo n migrations if they exist.
  2. Step 2: Analyze error cause

    If fewer than 3 migrations are applied, rollback STEP=3 fails because it can't undo more than exist.
  3. Final Answer:

    There are fewer than 3 migrations applied -> Option D
  4. Quick Check:

    Rollback STEP=n needs at least n migrations applied [OK]
Hint: Rollback STEP=n requires n migrations applied [OK]
Common Mistakes:
  • Thinking STEP option is unsupported
  • Believing server restart fixes rollback errors
  • Assuming rollback only works with STEP=1
5. You have applied 5 migrations. You want to undo the last 3 migrations and then reapply them one by one to test changes. Which sequence of commands achieves this?
hard
A. rails db:rollback STEP=3, then rails db:migrate three times
B. rails db:rollback STEP=3, then rails db:migrate once
C. rails db:migrate:reset, then rails db:migrate
D. rails db:rollback, then rails db:migrate STEP=3

Solution

  1. Step 1: Undo last 3 migrations

    Use rails db:rollback STEP=3 to undo the last three migrations at once.
  2. Step 2: Reapply migrations one by one

    Run rails db:migrate three times to apply each migration individually.
  3. Final Answer:

    rails db:rollback STEP=3, then rails db:migrate three times -> Option A
  4. Quick Check:

    Rollback STEP=3 + migrate x3 reapplies migrations [OK]
Hint: Rollback STEP=3 then migrate repeatedly reapplies changes [OK]
Common Mistakes:
  • Using migrate once after rollback STEP=3
  • Resetting database instead of rolling back
  • Trying migrate with STEP option (not valid)
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard