ruby-on-rails - 如何将 Rails 项目中的迁移文件设为 "clean up"?

标签 ruby-on-rails activerecord

我的 db/migrate 文件夹变得相当大。每次我需要在运行 rake db:migrate 之前编辑迁移文件时,滚动浏览所有文件并找到文件,然后向上滚动以折叠文件夹,这有点麻烦。一旦这个文件夹变得这么大,有没有办法“清理”它?也许有一种方法可以合并文件或将它们放在子文件夹中?

最佳答案

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

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

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

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

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

更新:我什至没有想到,您可能意味着编辑旧的迁移文件。您绝对不应该编辑旧的迁移文件。即使是意味着“连接”旧迁移文件的“合并”也不起作用,因为文件的时间戳决定了迁移的版本(并且使用它迁移是订购)。因此,如果您理解清理文件的意思是在浏览文件时“将它们移开”,则可以将它们移动到子文件夹中。

关于ruby-on-rails - 如何将 Rails 项目中的迁移文件设为 "clean up"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817286/

相关文章:

ruby-on-rails - 重定向或显示部分内容?

ruby-on-rails - Gem 缓存已弃用

ruby-on-rails - Rails 中未定义的局部变量或方法 to_a?

CodeIgniter ActiveRecord 乘法

c# - CaSTLe ActiveRecord 的 ActiveRecordMediator<> 支持 LINQ 吗?

ruby - 尝试使用多个数据库 - 未建立 ActiveRecord 连接

ruby-on-rails - 使用 Rails 4.1 在 hstore 字段中选择单个属性

ios - Rails API 的 POST 方法

ruby-on-rails - 未定义的方法无 "group_by"

php - Yii 关系记录与来自其他表的条件