我怎样才能清理"我的Rails项目中的迁移文件?

时间:2016-06-14 16:17:37

标签: ruby-on-rails activerecord

我的db / migrate文件夹已经变得非常大。每次我需要在运行rake db:migrate之前编辑迁移文件时,滚动浏览所有文件然后找到该文件然后向上滚动以折叠文件夹会有点麻烦。有没有办法清理"这个文件夹一旦变大了吗?也许是一种整合文件或将它们放在子文件夹中的方法?

1 个答案:

答案 0 :(得分:3)

您可以安全地将旧迁移放入子文件夹中。

检查用于确定是否需要运行迁移或是否已应用所有迁移的needs_migration? method。此方法将默认db/migrate文件夹中的所有迁移文件与数据库中 schema_migrations中存在的所有(已应用的)迁移进行比较。关键是搜索迁移文件为recursive

自己比较以下测试。测试调用返回文件系统上定义的迁移的migrations method并过滤掉迁移名称。

ActiveRecord::Migrator.migrations(['db/migrate']).map(&:name)
# => ["CreateUsers", "CreateJobs", "AddBirthToUsers", "CreateDelayedJobs", ...]

现在将一些迁移文件移动到db/migrate下的子文件夹并重复相同的命令,您将看到输出完全相同(您可以例如计算返回的条目)。因此,您可以在主迁移目录下的任何位置移动迁移文件,它们对Rails的行为也相同。

更新:它甚至没有发生在我身上,您可能意味着编辑旧的迁移文件。您应该从不编辑旧的迁移文件。即使是"整合"意思是"连接"旧的迁移文件也不起作用,因为文件的 timestamp 确定了迁移的版本(并使用它来定制迁移)。因此,如果了解到通过清理您想要的文件"将它们放在一边"浏览它们时,您可以将它们移动到子文件夹。