我从我的Rails应用程序开始就创建了很多迁移。其中一些仅用于测试目的。现在我有很多完全无用的迁移(例如:在一个迁移中创建一个表,在下一个迁移中删除它)。
由于在运行db:migrate时,schema.rb会得到更新,所以是否可以删除所有迁移并从实际内容开始? schema.rb?
我从我的Rails应用程序开始就创建了很多迁移。其中一些仅用于测试目的。现在我有很多完全无用的迁移(例如:在一个迁移中创建一个表,在下一个迁移中删除它)。
由于在运行db:migrate时,schema.rb会得到更新,所以是否可以删除所有迁移并从实际内容开始? schema.rb?
是的,你可以(而且可能应该)删除旧的迁移。随着模型代码依赖于后续版本的架构,你的旧迁移有可能不再起作用。
因此,请放心删除这些迁移文件(你确保将它们纳入源代码管理了吗?),使用
rake db:schema:load
如果需要,可以初始化一个新的数据库。
更新:Rails指南现在也有类似的内容:http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you
schema.rb
应该是您的权威来源。在我看来,他们应该依赖于它,而不是迁移。 - Thilo
rake db:schema:load
。 - Mikhail Nikalyukin