Ruby on rails 在rake任务中使用ActiveRecord::Base.transaction?
我正在编写一个rake任务,它在某一点上使用一个自定义YAML文件导入方法来为数据库种子 rake任务如下所示:Ruby on rails 在rake任务中使用ActiveRecord::Base.transaction?,ruby-on-rails,rake,yaml,Ruby On Rails,Rake,Yaml,我正在编写一个rake任务,它在某一点上使用一个自定义YAML文件导入方法来为数据库种子 rake任务如下所示: desc "Seed the database with production/ data." task :production => :environment do import_yaml 'seed/production' end 在导入代码中的某一点上,我有: ActiveRecord::Base.transaction do 尝试运行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
谢谢 也许您没有将“环境”包括在rake任务中
如果没有=>:environment,您将无法访问任何rails应用程序型号也许您没有在rake任务中包含“environment”
如果没有=>:environment,您将无法访问任何rails应用程序模型,这肯定包括代码或至少一个示例。此外,问题标题与问题无关,也与解决方案无关……应该是这样,对吗?7年后,我不记得实际的问题/解决方案是什么。如果可以,我会删除这个问题,但它不允许我删除,因为有人写了一个答案。这肯定应该包括代码或至少一个示例。此外,问题标题与问题无关,也与解决方案无关……应该是这样,对吗?7年后,我不记得实际的问题/解决方案是什么。如果可以,我会删除这个问题,但它不允许我删除,因为有人写了答案。
task (:my_rake_task => :environment) do
# ....
end