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

时间:2011-08-22 22:34:06

标签: ruby-on-rails ruby-on-rails-3 activemodel

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

这很好用,db的条款:迁移到我们现有的数据库。现在我注意到,当我执行db:create创建一个新的db时它会失败,因为rails创建了Message,然后当它向消息添加一个字段时我得到一个:

uninitialized constant AddActiveMessageIdToWalls::Message

我认为问题在于我还重命名了所有的控制器和放大器。从消息到线程的模型现在迁移时迁移无法找到模型?听起来不错吗?

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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