【问题标题】:What's the best practice for changing migration timestamp so that it changes the order a migration is run in rails?更改迁移时间戳以更改迁移在 Rails 中运行的顺序的最佳实践是什么?
【发布时间】:2020-03-28 18:51:54
【问题描述】:

我正在尝试执行一些迁移,但代码在遇到 hstore 扩展时停止。我的AddHstoreExtension 迁移文件目前是按时间戳顺序排列的最后一个迁移。我应该更改时间戳以使其首先运行吗?最佳做法是什么?

【问题讨论】:

  • 您可以简单地使用“次要”时间戳重命名文件。
  • 这是什么意思?
  • 我真的不认为你需要为最佳实践担心那么多。迁移实际上不应该永远存在于您的代码库中。一旦您在生产环境中运行迁移,就可以将其删除。

标签: ruby-on-rails postgresql rails-migrations


【解决方案1】:

文件名的前缀是用来确定顺序的,而不是文件本身的时间戳,只是让你知道,但是可以。

记住你可以:

rails db:rollback <number of migrations>

撤消您已应用的任何内容。

【讨论】:

  • 文件名的前缀不是时间戳吗?
  • 这是一个时间戳,但大多数文件系统也有一个文件最后一次被触摸的时间戳。这就是我说的你不必碰。
  • 好的,所以我不清楚你的回答是,当我运行rails db:rollback &lt;number of migrations&gt; 时,我不是必须运行rails db:migrate 然后按时间戳序列运行程序附加到文件的开头? rails db:rollback &lt;number of migrations&gt; 解决了这个问题吗?
  • 运行db:rollback 的原因是您需要更改的迁移是否已经应用。如果你还没有应用它们,你可以去修复它们,改变它们,在磁盘上做任何你想做的事情,然后运行db:migrate。但是如果你已经应用了它们,你需要db:rollback你去修复它们。
【解决方案2】:

我也遇到过同样的情况。我不得不一个接一个地跑。寻找一些最佳实践。没有找到,所以我只是重新排序了时间戳,而不是再次进行孔处理。这有点hacky,但可以达到目的。

但首先,请记住 o 回滚到需要修改的点。

【讨论】:

  • 通过重命名文件重新排序?
  • 是的,只是重新排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 2015-10-09
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 2011-02-17
相关资源
最近更新 更多