Rails migration: best way to retrieve current migration version

后端 未结 4 984
梦谈多话
梦谈多话 2021-01-30 03:06

Is there good way to retrieve migration version number?

I need to implement a method in a model which behave differently on and beyond a specific migration version.

相关标签:
4条回答
  • 2021-01-30 03:21

    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
    
    0 讨论(0)
  • 2021-01-30 03:25

    For Rails 5.x/6.x:

    puts ApplicationRecord.connection.migration_context.current_version
    puts ApplicationRecord.connection.migration_context.get_all_versions
    
    0 讨论(0)
  • 2021-01-30 03:27

    If you don't want to do this without loading your app you can create a script like this:

    #!/usr/bin/env ruby
    
    root = File.expand_path("../..", __FILE__)
    lines = `ls #{root}/db/migrate`
    puts lines.split("\n").last.split(" ").last.split("_").first
    

    Note the root line is because my script is in a bin dir

    0 讨论(0)
  • 2021-01-30 03:34

    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,
       ...
    
    0 讨论(0)
提交回复
热议问题