我正在使用带有rails 3.0.9的ruby 1.9.2。
每当我尝试执行rake db:seed时,它都会抛出以下错误:
rake aborted!
uninitialized constant EmployeeCategory
我已禁用线程安全并在config / application.rb文件中启用了“dependency_loading”。
config.threadsafe! unless $rails_rake_task
config.dependency_loading = true
但它仍无效。
这是seed.rb文件的内容
StudentCategory.destroy_all
StudentCategory.create([
{:name=>"OBC",:is_deleted=>false},
{:name=>"General",:is_deleted=>false}
])
EmployeeCategory.create([
{:name => 'Management',:prefix => 'MGMT',:status => true},
{:name => 'Teaching',:prefix => 'TCR',:status => true},
{:name => 'Fedena Admin',:prefix => 'Admin',:status => true},
{:name => 'Non-Teaching',:prefix => 'NTCR',:status => true}
])
EmployeePosition.create([
{:name => 'Principal',:employee_category_id => 2,:status => true},
{:name => 'Jr.Teacher',:employee_category_id => 3,:status => true},
{:name => 'Clerk',:employee_category_id => 4,:status => true}
])
答案 0 :(得分:7)
这可能是一个显而易见的问题,但您是否在/ models中创建了employee_category.rb模型?发现每次出现此错误时我都会创建视图,控制器和路径,但是忘记了添加模型文件等简单的事情。
答案 1 :(得分:4)
我解决了这个问题,确保我在我的seed.db数据中引用了我的模型,而不是我的控制器。我的控制器名为Categories,我的模型名为category。
This did not work:
categories = []
categories << Categories.create(name: 'guitar')
categories << Categories.create(name: 'bass')
categories << Categories.create(name: 'synth')
categories << Categories.create(name: 'effects pedal')
categories << Categories.create(name: 'amplifier')
This worked:
categories = []
categories << Category.create(name: 'guitar')
categories << Category.create(name: 'bass')
categories << Category.create(name: 'synth')
categories << Category.create(name: 'effects pedal')
categories << Category.create(name: 'amplifier')
答案 2 :(得分:2)
不相关但当模型以状态“s”结束时,您也会收到错误。我遇到了同样的问题,所以这可能有助于一些googlers
答案 3 :(得分:1)
您是否为每个文件在单个文件中创建了模型类?我曾经把两个类放在一个文件中(例如标题和细节关系类),认为管理它们会更容易,但这就是db:seed失败的原因!