ActiveRecord::Schema.define info :version in schema.rb --> 需要顺序吗?

jus*_*don 2 ruby-on-rails rails-migrations

在 rails db 创建脚本 schema.rb 中,顶部有这一行:

ActiveRecord::Schema.define(:version => 20111127090505) do
Run Code Online (Sandbox Code Playgroud)

文档(http://api.rubyonrails.org/classes/ActiveRecord/Schema.html)说信息哈希参数是可选的

  • 什么是:版本用于?
  • 是否需要在签到时增加这个数字?即,当天晚些时候签入会使版本号下降......
  • 如果有时间戳大于给定的迁移,它们是否会因为它们不在迁移表中而运行,但类文件存在?
  • 迁移文件是否按顺序运行?

Rya*_*igg 5

该版本用于确定上次运行的迁移。这只会随着时间的推移而增加。您在此处运行的迁移是在 UTC 时间 2011 年 11 月 27 日上午 09:05:05创建(未运行)的。这就是数字:时间戳。

每次运行新创建的迁移时,这个数字都会增加,这样 Rails 就会知道哪个最后运行了,下一个运行了哪个。要运行的下一个迁移将是第一个迁移的数量大于此数量的迁移。

是的,迁移文件按照它们的创建顺序运行。

  • 假设 2 个编码员: A 创建迁移 versionId 1 B 创建迁移 versionId 2 B 提交迁移和架构,架构版本更新为 2 A 提交迁移和架构,架构版本更新为 1 这种情况可以吗? (2认同)
  • @justingordon:如果发生这种情况,您可能会在 db/schema.rb 文件中遇到冲突。如果确实发生这种情况,请使用较大的数字 (2认同)