我有一个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
答案 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
文件。