在Rails中,有时我们会收到错误
ActiveRecord::PendingMigrationError
Rails如何知道迁移正在等待处理?
该标志/信息存储在哪里?
答案 0 :(得分:3)
创建模型或迁移时,会在文件名中添加时间戳。
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
答案 1 :(得分:1)
您的应用程序数据库中有一个名为 schema_migrations 的表,它有一个名为versions的列。每次运行的迁移都会有一行。如果光盘上有一个迁移文件,其时间戳未包含在 schema_migrations 表中,则Rails知道需要运行迁移。