我正在创建一个模型,它的名字是 rake 任务的输入参数。在 rake 任务之后,我希望使用该模型来插入数据。
例如,我调用输入为Apple的rake任务,并创建了Apple模型。然后我希望做 Apple.insert_all([{name: x},{name: y}...])
在另一个耙任务中,但我得到 NameError: uninitialized constant Apple
下面是我做的比较好的流程图。
Rake::Task["create:fruit"].invoke("Apple") # create model here
Rake::Task["create:insert"].invoke("Apple") # insert data here but getting error
我是这样处理第二个耙任务中的输入的。
task :insert, [:name] do |t, args|
fruit = args.name
fruit.classify.constantize.insert_all(xxx)
end
有什么建议吗?
我创建了一个新的项目,并尝试你的代码。我认为问题是在这一行
fruit.classify.constantize.insert_all(xxx)
代码bellow工作,并创建新的记录。我使用了一个简单的 rake
命令来运行它。
create.rake
文件
namespace :create do
desc "TODO"
task :insert, [:name] do |t, args|
klass = Object.const_get(args.name)
klass.create([{name: 'x'},{name: 'y'}])
p klass.count # testing new records have been saved
end
end
Rakefile
档案
require File.expand_path('../config/application', __FILE__)
Rails.application.load_tasks
task :default do
Rake::Task["create:insert"].invoke("Apple")
end