2011-08-22 19 views
0

这是发生了什么事。我曾经有一个称为消息的模型,然后我想重新命名它,所以我创建了一个迁移,将该表从消息重命名为线程。我有后来的迁移,然后添加到该表。我的迁移在重命名模型后坏掉了,我再也不能运行db了:创建

这工作得很好,它的条款数据库:迁移与我们现有的数据库前进。现在我注意到,当我做了分贝:创建创建一个新的数据库失败,因为轨道创建信息,然后当它添加一个字段来消息,我得到一个:

uninitialized constant AddActiveMessageIdToWalls::Message 

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

你如何在轨道世界中处理这个问题?由于

回答

3

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

+0

只是一个附录:schema.rb是好的,但如果你建立你的迁移没有数据操作(我认为应该由rake任务或其他类型的脚本来完成),你将永远不会与它的模式得到一个问题将是种无用;-) [这里一个关于它的交](http://www.saturnflyer.com/blog/jim/2010/09/14/always-check-in-schema-rb/)。 –

0

最简单的方法:只要在先前的迁移添加一个空的消息<的ActiveRecord :: Base的子类。

... migration file ... 
class Message < ActiveRecord::Base;end 
相关问题