生成/编写/运行Rails数据库迁移后,是否应将迁移文件和db/schema.rb
分别提交给版本控制?
答案 0 :(得分:3)
我见过的大多数人都是在一次提交中提交的。
这样对我来说更有意义。它确保在任何修订版上运行rake db:migrate
都不会修改db/schema.rb
。
答案 1 :(得分:3)
如果schema.rb
与迁移不同步,某些应该相似的佣金任务可能会有不同的行为,例如:
创建数据库后,如果运行:
rake db:migrate
- 它将运行迁移
rake db:schema:load
- 它将使用schema.rb
重新设置数据库:
rake db:migrate:reset
- 逐个重新创建运行迁移的数据库。
rake db:reset
- 使用当前版本的schema.rb
在这两种情况下,无论您选择哪个任务,结果都应该相同。通常,首选使用schema.rb
,因为它只需一步创建数据库,而不是为每次迁移传递数据,但如果它与迁移的版本不同,则结果会有所不同。