2010-05-27 80 views
0

我正在写一个rake任务,它一次使用自定义的YAML文件导入方法来为数据库创建种子。在Rake任务中使用ActiveRecord :: Base.transaction?

rake任务是这样的:

desc "Seed the database with production/ data." 
task :production => :environment do  
    import_yaml 'seed/production' 
end 

在导入代码一点,我有:

ActiveRecord::Base.transaction do 

试图运行rake任务抛出:

You have a nil object when you didn't expect it! 
You might have expected an instance of ActiveRecord::Base. 
The error occurred while evaluating nil.[] 

堆栈跟踪指向代码中的上述行。

有没有办法在Rake任务期间实例化ActiveRecord :: Base?

谢谢!

+0

那你的代码亲爱的? – Salil 2010-05-27 16:14:27

+0

这应该肯定包括代码或至少一个样本。此外,问题标题不涉及问题,也不解决方案.... – rpbaltazar 2017-04-18 02:39:47

+0

它应该,对吧? 7年后,我不记得实际问题/解决方案是什么。如果可以的话,会删除这个问题,但它不会允许我,因为有人写了一个答案。 – 2017-05-12 01:17:18

回答

3

也许你没有在rake任务中包含'环境'?

rake task can't access rails.cache

task (:my_rake_task => :environment) do 
    # .... 
end 

没有=>:环境中,您将无法访问任何你的Rails应用程序的模型