【发布时间】:2022-08-16 11:12:42
【问题描述】:
问题:我正在创建一个 Rails 应用程序,单一开发,在 Heroku 上运行分阶段/生产服务器,尚未公开发布。重做我的数据库基础设施,因为自创建表以来我已经完成了几次迁移。我知道这有点微不足道,但我试图在首次发布之前清理干净:
- 重做索引。
- 重新排序/重命名字段。我宁愿避免将时间戳字段随机夹在中间的表,并且 PostgreSQL 不允许简单的字段重新排序(因此,我可能会将时间戳标准化为向前移动的第一个字段,因此未来的迁移不会那么明显)。
可能的解决方案):我需要删除我的架构并重新加载它的干净副本。我可以:
- 根据我的喜好编辑现有表的
schema.rb结构。 - (?) 在
schema.rb中手动编辑[VERSION]时间戳。 - (?) 编辑最新的迁移文件,复制
schema.rb。 - 运行
rails db:schema:load-esque(可能需要额外的db:reset-esque 步骤来首先删除现有架构/结构)。 - 删除旧的迁移文件。
问题一:见 2.-3。除了房间里的大象,这种方法一般不推荐长期使用,
rails db:schema:dump什么时候有用例?,因为它本质上是我手工做的?我不相信它会生成不是事先通过 Rails 生成的模型表,因此可能会变得混乱(不运行rails generate model --skip-migration)。它是创建一个新的迁移,还是至少更新schema.rb时间戳,以免向后看之前的迁移?否则,我会认为:dump对 Rails 自己的系统来说是非常规的。问题2:我知道一旦我推送更改,它将破坏分阶段/生产服务器(再次,我必须在它们上运行第 5 步,或者只是用新副本替换我的 Heroku 应用程序)。然而,这种方法也会破坏这些,和/或破坏未来的 Rails 迁移步骤吗?我宁愿确保我构建的任何东西都可以干净地启动,而不需要我可以避免的额外步骤。
- 根据我的喜好编辑现有表的
-
您关心数据库中的任何数据吗?
-
@muistooshort,还没有。
标签: ruby-on-rails postgresql database-design rake ruby-on-rails-7