NoMethodError: 未定义的方法 'generate' for Roo::CSV:Class



我尝试制作一个计划的每日csv邮件。我在进口商类中输入:"包括Roo"然后我放了两个函数:

def self.daily_mail
  Company.find_each do |c|
    export_to_csv(c)
  end
end
def self.export_to_csv(company)
  @opportunities = company.opportunities
  csv_data = CSV.generate do |csv|
    csv <<  ["Opportunity Id", "Created At", "Request Id", "Champion Id", "Referral_Id"]
    @opportunities.all.each do |opportunity|
      csv << [opportunity.id, opportunity.created_at, opportunity.request_id, opportunity.champion_id, opportunity.referral_id]
    end
  end
end

在调度器类中,我编码:

task :export => :environment do
  puts "Exporting..."
    Importer.daily_mail
  puts "done."
end

然而,当我尝试在我的终端中运行时:

rake export

我得到了:

rake aborted!
NoMethodError: undefined method `generate' for Roo::CSV:Class

有人能帮我吗?

我不确定为什么这里需要Roo,但仅用于导出csv文件,标准csv库就足够了。CSV.generate是标准库中的一个方法,因此要使用它,必须将require 'csv'添加到Importer文件中。

您还需要删除"include Roo"以避免冲突。但如果您仍然想使用Roo,请将CSV.generate替换为::CSV.generate

最新更新