繁体   English   中英

Rails如何知道迁移正在等待中?

[英]How does Rails know that migrations are pending?

在Rails中,有时我们会收到错误消息

ActiveRecord::PendingMigrationError

Rails如何知道迁移正在等待中?

该标志/信息存储在哪里?

创建模型或迁移时,会将时间戳添加到文件名中。

         20160727050119_create_user.rb
         #time-stamp 20160727050119

然后,一个方法call(env)检索上一个迁移标记。

       `mtime = ActiveRecord::Migrator.last_migration.mtime.to_i`

并将其与@last_check比较,如果小于mtime

check_pending! 被调用,并显示ActiveRecord::PendingMigrationError

       ActiveRecord::Migration.check_pending!(connection) 

check_pending!

      def check_pending!(connection = Base.connection)
        raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection)
      end

您可以找到所有这些信息.../lib/active-record/migration.rb

应用程序的数据库中有一个名为schema_migrations的表,该表只有一个列,称为版本。 每个已运行的迁移都会有一行。 如果磁盘上有一个迁移文件,其时间戳未包含在schema_migrations表中,则Rails知道需要运行迁移。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM