2011-07-07 61 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

在其他三個模型/表格中,是的。但這是該模型/表格中的第一個。 –

相關問題