Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 不可逆转的迁移与全新的迁移?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 不可逆转的迁移与全新的迁移?

Ruby on rails 不可逆转的迁移与全新的迁移?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我们的网站不久前进入了beta测试阶段,现在我们有了大量的生产用户,我们意识到我们在初始模式方面犯了一些大错误,并且觉得我们现在需要修改数据库的结构 这将导致我们编写一系列不可逆转的迁移。与此相反,有人建议我们可以完全删除数据库,销毁所有现有的迁移,然后从头重写它们,避免我们第一次犯的错误 我有几个问题: 1) 在现实生活中真的有人这样做吗? 2) 我们保留数据的选项是什么?水龙头仍然是一条路要走吗? 3) 或者我们应该只写不可逆转的迁移,而忘记删除数据库吗 我想这在某种程度上是可以解决的。不可

我们的网站不久前进入了beta测试阶段,现在我们有了大量的生产用户,我们意识到我们在初始模式方面犯了一些大错误,并且觉得我们现在需要修改数据库的结构

这将导致我们编写一系列不可逆转的迁移。与此相反,有人建议我们可以完全删除数据库,销毁所有现有的迁移,然后从头重写它们,避免我们第一次犯的错误

我有几个问题:

1) 在现实生活中真的有人这样做吗? 2) 我们保留数据的选项是什么?水龙头仍然是一条路要走吗? 3) 或者我们应该只写不可逆转的迁移,而忘记删除数据库吗


我想这在某种程度上是可以解决的。

不可逆转的迁移并不可怕。在某些情况下,迁移可能无法逆转

我的建议是不要删除数据库,而是通过小步骤进行更改

首先为您的用户创建一个并行模型,或者使用requires字段更改现有模型。创建一个(至少两个)迁移并部署,确保当前应用程序仍按预期工作

然后创建另一批迁移并部署


以您想要的方式更改所有结构可能需要5次、10次甚至20次迭代,但您不会执行删除数据库、使应用程序脱机以及稍后导入整个数据库的过程。

好的,这是非常有用的建议。我要这么做。并且在将来从schema.rb构建数据库。很高兴知道这件事。