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

Rails: Creating a csv file in a rake task - can't access a classes database column_names

我正在努力创建一个简单的 rake 任务,它将生成数据库的 csv 转储 table "baselines"。

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 将在控制台、视图等中工作。

如有任何想法,我们将不胜感激。

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

使这两个一致,Baseline在这两种情况下都是必需的。