我正在努力创建一个简单的rake任务,它将生成数据库表" baselines"的csv转储。
task :send_report => :environment do
path = "tmp/"
filename = 'data_' + Date.today.to_s + '.csv'
Baseline.all.each do
CSV.open(path + filename, "wb") do |csv|
csv << Baseline.column_names
Baseline.all.each do |p|
csv << p.attributes.values_at(*column_names)
end
end
end
end
我收到错误
undefined local variable or method `column_names' for main:Object
我完全不清楚为什么会这样.... Baseline.column_names可以在控制台,视图等中使用。
任何想法都会受到赞赏。
答案 0 :(得分:1)
您在第一种情况下指定了Baseline.column_names
,但在column_names
电话上只指定values_at
。默认为main
上下文,其中不存在此类方法。必须针对模型调用它。
使这两者保持一致,两种情况都需要Baseline
。