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

Ruby on rails 我的迁移在重命名模型后中断,我无法再运行db:create,ruby-on-rails,ruby-on-rails-3,activemodel,Ruby On Rails,Ruby On Rails 3,Activemodel,事情是这样的。我曾经有一个名为Message的模型,然后我想重命名它,所以我创建了一个迁移,将该表从Message重命名为Thread。我后来进行了迁移,然后将迁移添加到该表中 这很好,它是db的术语:迁移以继续使用我们现有的数据库。现在我注意到,当我创建一个db:create来创建一个新的db时,它失败了,因为rails创建了一条消息,然后当它向消息添加一个字段时,我得到一个: uninitialized constant AddActiveMessageIdToWalls::Message

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

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

uninitialized constant AddActiveMessageIdToWalls::Message
我认为问题在于,我还将所有控制器和模型从消息重命名为线程,现在迁移在迁移时找不到模型?听起来对吗


在rails世界中,您如何处理这个问题?感谢

最简单的解决方案:只需在早期迁移中添加一个空消息
... migration file ...
class Message < ActiveRecord::Base;end
。。。迁移文件。。。
类消息
最简单的解决方案:只需在早期迁移中添加一个空消息
... migration file ...
class Message < ActiveRecord::Base;end
。。。迁移文件。。。
类消息
我喜欢更新我的db/schema.rb以避免这种情况。因此,当我需要在新环境中创建数据库时,我只需要执行
rakedb:create
rakedb:schema:load
。不需要迁移。

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

只需要一个附录:schema.rb很好,但是如果您在构建迁移时不进行数据操作(我认为应该通过rake任务或其他类型的脚本来完成),您将永远不会遇到问题,schema将是一种无用的;-)。只是一个附录:schema.rb很好,但是如果您构建迁移时不进行数据操作(我认为应该通过rake任务或其他类型的脚本来完成),您将永远不会遇到问题,schema将是一种无用的;-)。