Rails:在rake任务中创建csv文件 - 无法访问类数据库column_names

时间:2016-04-12 18:16:08

标签: csv ruby-on-rails-4 rake

我正在努力创建一个简单的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可以在控制台,视图等中使用。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您在第一种情况下指定了Baseline.column_names,但在column_names电话上只指定values_at。默认为main上下文,其中不存在此类方法。必须针对模型调用它。

使这两者保持一致,两种情况都需要Baseline