删除Rails应用程序中的旧迁移文件

nif*_*fty 16 ruby-on-rails rails-migrations

如果架构稳定,是否允许在Rails应用程序中删除(或存档)旧的迁移文件?

我的迁移很多,我怀疑某处可能存在一些问题,因为我偶尔会在Heroku上迁移数据库时遇到问题.

Zac*_* Xu 28

您不需要在Rails应用程序中保留旧的迁移文件,因为应该在schema.rb或可用于重新生成模式的等效SQL文件中捕获数据库模式.

迁移不是数据库架构的权威来源.该角色属于db/schema.rb或Active Record通过检查数据库生成的SQL文件.它们不是为编辑而设计的,它们只代表数据库的当前状态.

通过重放整个迁移历史记录,不需要(并且容易出错)部署应用程序的新实例.将数据库中的当前模式的描述加载到schema.rb或SQL文件中要简单得多,速度更快.
此文件应进行版本控制并保留在源代码管理中.

要设置自动schema.rb生成,请通过config.active_record.schema_format设置修改config/application.rb,该设置可能是:ruby或:sql.如果:选择ruby,则架构存储在db/schema.rb中.如果:选择了sql,则会以数据库的本机SQL格式转储该架构.

  • 这绝对是正确的.需要注意的是:迁移可用于影响数据库的_content_,而不是_structure_.例如,您可能拥有转换数据的SQL(可能正常化,转换为大写或大写等).另一个用途是一些清理任务(删除旧记录,更正数据创建中的早期逻辑错误等).最后,应该在`seeds.db`中完成的操作有时在迁移中完成.这种迁移的使用是否正确*是另一个问题 - 只是注意到你应该小心. (8认同)

Jer*_*nch 5

您可以删除旧的迁移。完成此操作后,当您设置应用程序时,您将需要运行:

rake db:schema:load
Run Code Online (Sandbox Code Playgroud)

代替:

rake db:migrate
Run Code Online (Sandbox Code Playgroud)