运行迁移时未初始化的常量#{MIGRATION_NAME} ::#{TABLE_NAME}

时间:2014-12-29 23:45:59

标签: ruby-on-rails ruby migration rake

我有一个Rails迁移,它会在我的表中创建一些条目。此表已在先前的迁移中创建。然后,表肯定存在。

但是,当我运行它时,我收到此错误:

uninitialized constant AddInitialStates::State

以下是我的迁移示例:

class AddInitialStates < ActiveRecord::Migration
  def up
    State.create :short_name => 'AL', :long_name => 'Alabama'
    State.create :short_name => 'AK', :long_name => 'Alaska'

    # ... other create requests
  end
end

1 个答案:

答案 0 :(得分:1)

实际上解决方案非常简单。运行rake db:migrate时,迁移工具需要存在模型。因此,在这里,我们收到uninitialized constant错误。迁移工具正在搜索State模型,并将使用它来调用create方法。

然后,有几种方法可以解决这个问题。最简单的是创建缺失的模型。

否则,如果您不想创建它们,这是一个简单的修复。如果您正在运行过渡迁移以在正确的模式版本中结束,则可能需要它。

对于每个错误的迁移,请在其中插入此代码:

class MyMigration < ActiveRecord::Migration
  def MyTable < ActiveRecord::Base; end

  def change
    # Your migration
  end
end

这些解决方案适用于Rake未找到模型/实体/表格的每个类似解决方案。

顺便说一句,你应该避免这些创建请求。请改用seeds.rb文件。