这是我正在尝试运行的rake任务
desc "This task changed the status of started jobs"
task :start_status => :environment do
jobs_to_be_started = Job.find_all_by_status("Started")
jobs_to_be_started do |job|
job.status = "Running"
job.saved
end
end这是我收到的错误
Rake aborted! undefined method `jobs_to_be_started' for main:Object我用过谷歌,看不到明显的答案,有谁能给我指个方向吗?
发布于 2012-01-27 21:24:10
您可能遗漏了一个迭代器(例如each)?
desc "This task changed the status of started jobs"
task :start_status => :environment do
jobs_to_be_started = Job.find_all_by_status("Started")
jobs_to_be_started.each do |job|
job.status = "Running"
job.save
end
end而且你可能会在job.saved上得到一个错误,这是一个印刷错误吗?我建议你在这里使用update_attributes,比如
jobs_to_be_started.each do |job|
job.update_attributes :status => "Running"
end发布于 2012-01-27 21:27:19
示例中的以下代码是对方法jobs_to_be_started的调用:
jobs_to_be_started do |job|
job.status = "Running"
job.saved # If you don't define `saved` method yourself it should be `save`
end只要方法总是在对象上调用,并且您没有指定对象,那么就在self上调用jobs_to_be_started。在本例中,self是主Object (代码外部类/模块定义的上下文)。
Main对象没有定义jobs_to_be_started方法,这就是你得到这个错误的原因。
从您的代码中,我假设您希望调用jobs_to_be_started列表中的每个作业,因此您很可能希望这样做:
jobs_to_be_started.each do |job|
job.status = "Running"
job.saved
end这里调用jobs_to_be_started对象的each方法(并将此调用与块相关联)。
https://stackoverflow.com/questions/9033759
复制相似问题