rails 如何知道我有待处理的迁移?

How does rails know I have a pending migration?

我了解到 rails 在迁移文件名中使用了时间戳。它如何利用这些来确定到目前为止 运行 哪些迁移以及仍然需要 运行 的迁移?是否有一个值存储在某个地方,让它知道上次迁移是 运行?

在您的数据库中,有一个名为 schema_migrations 的 table 跟踪它。它由 rails 自动维护,并且有一个名为 version 的列。该列包含迁移的日期时间戳,每一行代表已经 运行.

的迁移

因此,Rails 可以查看您应用中的所有 'migration' 文件,找出哪些文件在 schema_migrations table 中还没有相应的行,以及 运行 它们(向模式迁移 table 添加新行,对于每个迁移,因为它 运行s)

下面是 schema_migrations table.

的内容示例