我试图创建一个自定义耙任务,但似乎我没有访问我的模型。我以为这是rails任务中隐含包含的内容。
我在lib/tasks/test.rake中有以下代码:
namespace :test do
task :new_task do
puts Parent.all.inspect
end
end
下面是我的父模型:
class Parent < ActiveRecord::Base
has_many :children
end
这是一个非常简单的例子,但是我得到了以下错误:
/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent
(See full trace by running task with --trace)
什么好主意吗?谢谢
当您开始编写rake任务时,请使用生成器为您清除它们。
例如:
rails g task my_tasks task_one task_two task_three
您将在lib/tasks中创建一个名为my_tasks的存根。Rake(显然使用您自己的名称空间。)它看起来像这样:
namespace :my_tasks do
desc "TODO"
task :task_one => :environment do
end
desc "TODO"
task :task_two => :environment do
end
desc "TODO"
task :task_three => :environment do
end
end
所有的rails模型等都可以从每个任务块中用于当前环境,除非您正在使用生产环境,在这种情况下,您需要使用您想要使用的特定模型。在任务主体内执行此操作。(IIRC这在不同版本的Rails中有所不同。)
当您开始编写rake任务时,请使用生成器为您清除它们。
例如:
rails g task my_tasks task_one task_two task_three
您将在lib/tasks中创建一个名为my_tasks的存根。Rake(显然使用您自己的名称空间。)它看起来像这样:
namespace :my_tasks do
desc "TODO"
task :task_one => :environment do
end
desc "TODO"
task :task_two => :environment do
end
desc "TODO"
task :task_three => :environment do
end
end
所有的rails模型等都可以从每个任务块中用于当前环境,除非您正在使用生产环境,在这种情况下,您需要使用您想要使用的特定模型。在任务主体内执行此操作。(IIRC这在不同版本的Rails中有所不同。)