NoMethodError:未定义的方法`生成'用于Roo :: CSV:Class

时间:2015-12-30 14:59:20

标签: ruby-on-rails ruby csv roo-gem

我尝试制作预定的每日csv邮件。 我把我的Importer类放在里面: “包括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

有人可以帮我请求吗?

1 个答案:

答案 0 :(得分:3)

我不确定你为什么需要Roo,但仅用于导出csv文件,标准CSV library就足够了。 CSV.generate是标准库中的方法,因此要使用此方法,您必须将{"error":true,"message":"App\\Http\\Controllers\\HintController::_getHintsFromList(): Failed opening required '..\/..\/FirePHPCore\/FirePHP.class.php' (include_path='\/var\/www\/build\/app\/Http\/lib: .:\/usr\/share\/php:\/usr\/share\/pear')"} 添加到Importer文件。

您还需要删除“包含Roo”以避免冲突。但是,如果您仍想使用Roo,请将require 'csv'替换为CSV.generate