From bf04dfcca578580d90350142df501caa08d03536 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Wed, 9 Oct 2024 17:44:45 -0500 Subject: [PATCH] Add Rollback A Couple Migrations as a Rails TIL --- README.md | 3 ++- rails/rollback-a-couple-migrations.md | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 rails/rollback-a-couple-migrations.md diff --git a/README.md b/README.md index 48bd463..ffde79e 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1457 TILs and counting..._ +_1458 TILs and counting..._ --- @@ -965,6 +965,7 @@ _1457 TILs and counting..._ - [Rescue From With A Separate Method](rails/rescue-from-with-a-separate-method.md) - [Respond With JSON Regardless of Content Type](rails/respond-with-json-regardless-of-content-type.md) - [Retrieve An Object If It Exists](rails/retrieve-an-object-if-it-exists.md) +- [Rollback A Couple Migrations](rails/rollback-a-couple-migrations.md) - [Rollback A Specific Migration Out Of Order](rails/rollback-a-specific-migration-out-of-order.md) - [Rounding Numbers With Precision](rails/rounding-numbers-with-precision.md) - [Run A Rake Task Programmatically](rails/run-a-rake-task-programmatically.md) diff --git a/rails/rollback-a-couple-migrations.md b/rails/rollback-a-couple-migrations.md new file mode 100644 index 0000000..0818814 --- /dev/null +++ b/rails/rollback-a-couple-migrations.md @@ -0,0 +1,25 @@ +# Rollback A Couple Migrations + +Let's say we need to rollback a couple Rails migrations that have been applied +to our local environment. We run `rails db:migrate:status` and see that there +are _2_ migrations that we want to _undo_. + +We can accomplish this by using the `STEP` env var with the rollback command. + +```bash +$ rails db:rollback STEP=2 +``` + +Just set `STEP` to the number of migrations that we need to rollback. If we +then rerun `rails db:migrate:status` we'll now see those latest two migrations +are `down`. + +Note: by default Rails doesn't like to operate with pending migrations. If we +want to temporarily disable the pending migration check, we can alter the +migration error config in `config/development.rb`. + +```diff + # Raise an error on page load if there are pending migrations. +- # config.active_record.migration_error = :page_load ++ config.active_record.migration_error = false +```