Rails - 删除迁移vs删除表

时间:2017-05-19 13:00:25

标签: ruby-on-rails activerecord ruby-on-rails-5

我过去5个月一直在构建应用程序,我即将发布Alpha。在那段时间里经历了很多变化,结果在数据库中有很多剩余的表和列不再被使用了。

我的问题是,由于应用程序中没有数据,我可以删除实际的迁移,然后重置数据库而不是创建新的迁移以删除表和列吗?或者我不知道会有什么缺点?

由于

2 个答案:

答案 0 :(得分:1)

来自migrations

上的指南
  

迁移,尽管可能很强大,但并不是权威来源   对于您的数据库架构。该角色属于db / schema.rb或   Active Record通过检查数据库生成的SQL文件。他们   不是为了编辑而设计的,它们只代表当前的状态   数据库。

     

部署新的实例不需要(并且容易出错)   通过重播整个迁移历史记录的应用程序。它简单得多   并且更快地加载到数据库中的当前描述   架构。

您似乎有点误解了迁移的角色,它们并不意味着要再次运行来设置您的数据库,该角色是schema.rb填充命令

rake db:schema:load

我建议删除所有迁移,然后从db中删除不需要的表和列,然后就可以运行

rake db:migrate

将为您生成更新的schema.rb文件,其中包含您想要的数据库版本。

答案 1 :(得分:-1)

这些迁移的优点是:使用多个人进行编码 - >轻松设置开发环境和共享数据库。

您可以将应用程序推送到任何环境,而不必关心数据库的状态。迁移将告诉你!

在你的情况下,它有点奇怪:你在一个项目上独自工作了5个月,你从来没有想过清理未使用的表或列!! ??我建议你:写下(在纸上)你真正需要的表和列,然后你有两个选择:

  1. 编写迁移,删除不需要的列和表或
  2. 如果您没有实时数据并且不需要重置并且您想花费额外的时间,那么您可以使用(纸张)表格中的表格和列创建一组新的迁移