在生成/编写/运行Rails数据库迁移后,应该将迁移文件和
db/schema.rb
分别提交到版本控制中吗?db/schema.rb
分别提交到版本控制中吗?我见过的大多数人都是在一个提交中完成这些操作。
我认为这样做更有意义。这样可以确保在任何修订版本上运行 rake db:migrate
不会修改 db/schema.rb
。
如果schema.rb
与迁移文件不同步,那么一些类似的rake任务可能会表现得不同,例如:
在创建数据库后,如果运行:
rake db:migrate
- 它将运行迁移文件
rake db:schema:load
- 它将使用 schema.rb
重置数据库:
rake db:migrate:reset
- 逐个运行迁移文件重新创建数据库。
rake db:reset
- 使用当前版本的schema.rb
重新创建数据库。
在任何情况下,无论选择哪个任务,结果都应该是相同的。通常,使用 schema.rb
更好,因为它可以一步创建数据库,而不是遍历每个单独的迁移文件,但如果它与迁移文件的版本不同,则结果将不同。