簡體   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