Rails migration: best way to retrieve current migration version

Solution 1:

There's a much nicer way: rake db:migrate:status

up     20120530222941  Create shenanigans
up     20120613030015  *** NO FILE ***

Indicating that I've deleted my latest migration file.

Or more simply:

> rake db:version
Current version: 20120613030015

Solution 2:

Rails 5.2 and higher:

> ApplicationRecord.connection.migration_context.current_version
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
=> 20200510093804

> ApplicationRecord.connection.migration_context.get_all_versions
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
=> [20191005164928,
    20191006111502,
   ...

 
Rails up to 5.1.7:

> ActiveRecord::Migrator.current_version
   (0.2ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
=> 20120110085802

> ActiveRecord::Migrator.get_all_versions
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
=> [20111114121610,
    20111115091108,
   ...

Solution 3:

For Rails 5.x/6.x:

puts ApplicationRecord.connection.migration_context.current_version
puts ApplicationRecord.connection.migration_context.get_all_versions