重命名模型后,我的迁移中断了,我无法再运行 db:create

发布于 2024-12-01 01:00:07 字数 393 浏览 1 评论 0原文

事情是这样的。我曾经有一个名为 Message 的模型,然后我想重命名它,因此我创建了一个迁移,将该表从 Message 重命名为 Thread。我后来进行了迁移,然后将其添加到该表中。

这工作得很好,它是 db:migrate 的条款,可以继续使用我们现有的数据库。现在我注意到,当我执行 db:create 来创建一个新的数据库时,它失败了,因为rails创建了消息,然后当它向消息添加字段时,我得到一个:

uninitialized constant AddActiveMessageIdToWalls::Message

我认为问题是我还重命名了所有控制器&模型从消息到线程,现在迁移时找不到模型?听起来对吗?

在 Rails 世界中你如何处理这个问题?谢谢

here's what happened. I used to have a Model called Message, I then wanted to rename it so I created a migration that renamed that table from Message to Thread. I had later migrations that then added to that table.

That worked fine, it terms of db:migrate to move forward with our existing databases. Now I noticed that when I do a db:create to create a fresh db it fails, as rails creates Message, then when it goes to add a field to message I get a:

uninitialized constant AddActiveMessageIdToWalls::Message

I think the problem is that I also renamed all the controller & models from message to thread and now the migration can't find the model when migrating? Does that sound right?

How do you deal with this in the rails world? Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瞎闹 2024-12-08 01:00:07

我喜欢保持我的 db/schema.rb 更新以避免这种情况。因此,当我需要在新环境中创建数据库时,我只需要执行 rake db:create 和 rake db:schema:load 即可。无需迁移。

I like to keep my db/schema.rb updated to avoid this. So when I need to create the db in a new environment, I just need to do the rake db:create and rake db:schema:load. No migration is needed.

2024-12-08 01:00:07

最简单的解决方案:只需添加一个空 Message <早期迁移中的 ActiveRecord::Base 子类。

... migration file ...
class Message < ActiveRecord::Base;end

easiest solution: just add an empty Message < ActiveRecord::Base subclass in the earlier migration.

... migration file ...
class Message < ActiveRecord::Base;end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文