它是认为是安全的手动编辑在轨schema.rb(Is it considered safe to m

2019-07-30 05:51发布

我碰到我在那里工作的两个分支上轨项目问题,每个项目都有迁移到添加一列。 当时, rake db:migrate:reset造成一个问题,我完全依靠我的schema.rb正确表示我的数据库的状态。 在一个点上,我遇到了一个问题,即由分公司加入A柱钻进分支B的模式由于migrate:reset不是一种选择,我使出手动编辑模式文件。 我犯了这个变化,基本上删除了一个分支,我没有在分支B的schema.rb需要的列。

之后我已经合并一个分支到主问题就来了。 当我试图支路B变基到高手,我仍然有B中删除列(它现在已经成为相关的,因为它是在主)在架构文件提交。 Git的没有看到这个冲突和自动合并它。 在我的底垫的最后,我发现我的模式是与我有什么在主不一致。

我的解决方法是重新编辑模式文件并手动添加先前删除列回模式文件。 我的问题是:这被认为是标新立异? 危险吗? 哈克?

现在,它涉及到一个列,但如果涉及多列删除/添加的(危险吗?)解决方案,可能会导致更多的问题和db / schema.rb不一致。

Answer 1:

它被普遍认为是不好的做法,编辑schema.rb文件。

根据该对迁移的Rails指南 :

迁移,强大的,因为他们可能是不适合你的数据库架构的权威来源。 这一作用下降到任何DB / schema.rb或活动记录产生通过检查数据库的SQL文件。 它们不是设计来进行编辑,他们只是表示数据库的当前状态。

schema.rb得到更新每次运行一个新的迁移时间

需要注意的是运行DB:还迁移调用DB:模式:转储任务,这将更新您的db / schema.rb文件,以符合您的数据库结构。

我建议你只是花了一些时间来理清头绪,并获得schema.rb文件回到正轨,并纠正了最新的迁移组。



文章来源: Is it considered safe to manually edit schema.rb in rails