ame*_*ior 3 activerecord ruby-on-rails database-migration
在 Rails 中,有时我们会遇到错误
ActiveRecord::PendingMigrationError
Rails 如何知道迁移正在进行中?
该标志/信息存储在哪里?
小智 6
创建模型或迁移时,时间戳会添加到文件名中。
20160727050119_create_user.rb
#time-stamp 20160727050119
Run Code Online (Sandbox Code Playgroud)
call(env)然后是检索最后一个迁移标记的方法。
`mtime = ActiveRecord::Migrator.last_migration.mtime.to_i`
Run Code Online (Sandbox Code Playgroud)
并将其与比较@last_check,如果小于mtime
check_pending!被调用并被ActiveRecord::PendingMigrationError显示。
ActiveRecord::Migration.check_pending!(connection)
Run Code Online (Sandbox Code Playgroud)
检查待处理!
def check_pending!(connection = Base.connection)
raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection)
end
Run Code Online (Sandbox Code Playgroud)
您可以找到所有这些信息.../lib/active-record/migration.rb
应用程序的数据库中有一个名为schema_migrations的表,其中有一个名为 versions 的列。每个已运行的迁移都会有一行。如果磁盘上有一个迁移文件,其时间戳不包含在schema_migrations表中,那么 Rails 就知道需要运行迁移。
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |