2011-07-07 88 views
2

在我的sample_data.rake文件中,我有导致“uninitialized constant Diner”错误的命令“Diner.create!(...)”。但是,如果我在Rails控制台中执行相同的“Diner.create!(...)”命令,则它是成功的。如果我在sample_data.rake文件中“需要”模型,则会出现错误“ActiveRecord::ConnectionNotEstablished”,回溯显示“active_record/connection_adapters/abstract/connection_pool.rb:318:in retrieve_connection'”。这里是我的diner.rb文件:Rake中的模型参考未初始化的常量错误

class Diner < ActiveRecord::Base 
    has_many :redemptions 
    has_many :surveys, :through => :redemptions 
end 

而引起该问题是sample_data.rake文件中的代码:

99.times do |n| 
    gender = rand(1) == 0 ? "male" : "female" 
    birthdate = Date.ordinal(DateTime.now.year - 13 - rand(62), rand(364)+1) 
    Diner.create!(:gender => gender, :birthdate => birthdate) 
end 

卸下上面的代码导致成功处理的文件。而且,正如我之前所说的,上面的代码在rails控制台中正常工作。

回答

8

您的耙子任务显然缺少导轨环境。 如果你的任务具有以下结构和模型是内$LOAD_PATH那么一切应罚款:

 namespace :yourapp do 
     desc "Create sample data" 
     task :populate => :environment do 
      # create other data 
      99.times do |n| 
      gender = rand(1) == 0 ? "male" : "female" 
      birthdate = Date.ordinal(DateTime.now.year - 13 - rand(62), rand(364)+1) 
      Diner.create!(:gender => gender, :birthdate => birthdate) 
      end 
     end 
    end 

你看到task :populate => :environment do线,它告诉耙火起来的环境,任务[1],然后执行你的任务现在可以访问您的模型和数据库

[1] railties-3.0.4/lib目录/导轨/ application.rb中#214

[1] railties-3.0.4/lib目录/导轨/应用.rb#101

干杯

+0

我忽略提及这不是我在任务中引用的第一个模型。实际上,有四种不同的模型在此任务之前收到记录,并且在今天添加此新表之前,任务已成功完成数月。如果我删除了新的代码,这个任务再次运行。我在文件的顶部附近有“任务:填充=>:环境”。 还有什么你可以想到的我检查? –

+0

您是否在99.times'循环之前创建记录? – krichard

+0

在其他三个模型/表格中,是的。但这是该模型/表格中的第一个。 –

相关问题