如何将所有迁移文件转换为Rails中的单个文件?

Elt*_*taf 4 ruby-on-rails rails-migrations

我一直在Ruby on Rails上开发一个项目.在开发过程中,我为我的项目生成了大量的迁移文件.有时我添加和删除了不同表中的列.

有没有办法可以将多个文件中的所有迁移合并到一个文件中?

Tod*_*obs 9

TL; DR

您需要的不是一组整合的迁移; 它是一个模式文件和一个可选的seeds.rb文件.Rails通常在您运行迁移时自动维护模式,因此您已经拥有了应该需要的大部分内容,可能除了种子数据之外,如下所述.

使用架构,而不是迁移

通常,您不应该维护大量迁移.相反,您应该定期清除迁移,并使用schema.rbschema.sql(重新)创建数据库.在Rails的指导具体状态:

通过重放整个迁移历史记录,不需要(并且容易出错)部署应用程序的新实例.只是将当前模式的描述加载到数据库中要简单快得多...因为模式转储是数据库模式的权威来源,所以强烈建议您将它们检入源控件.

因此,您应该使用bin/rails db:schema:load而不是运行迁移,或者在旧版本的Rails上运行相关的Rake任务.

数据迁移

虽然您可以使用迁移来修复或修复与最近架构更改相关的数据,但数据迁移(如果使用的话)应该是临时工件.数据迁移几乎从不是幂等的,因此您不应长期维护数据迁移.指南说:

有些人使用迁移来向数据库添加数据......但是,Rails有一个"种子"功能,应该用于为初始数据播种数据库.这是一个非常简单的功能:只需用一些Ruby代码填充db/seeds.rb,然后运行rake db:seed ...这通常是设置空白应用程序数据库的一种更简洁的方法.

应该加载数据库种子数据bin/rails db:seed(或相关的Rake任务),而不是在迁移中维护数据.