Rails - 将Active Record关系传递给CSV

时间:2017-01-10 11:38:56

标签: ruby-on-rails ruby csv

我尝试过滤所有场地,并在没有external_join_url的情况下添加任何已创建的CSV。

require 'csv'
namespace :create_dump do
  desc "Erase and fill database"
  task :venue => :environment do

    @venues = Venue.where(external_join_url: nil)
    CSV.open("venues_without_join_url.csv", "w") do |csv|
      csv << ["Venue Title"]
      @venues.each do |venue|
        csv << venue.title
      end
    end
  end
end

当我尝试这样做时,我收到错误:

NoMethodError:未定义的方法`map&#39; for&#34; 5 Pancras Square&#34;:String

我知道这意味着我正在尝试映射字符串,但无法看到我创建字符串的部分。我尝试过不同的方式来分配@venues(创建一个数组并挖掘它)无济于事。

1 个答案:

答案 0 :(得分:1)

csv&lt;&lt; 期望一个字符串数组意味着csv文件中一行的字段

require 'csv'
namespace :create_dump do
  desc 'Erase and fill database'
  task venue: :environment do
    @venues = Venue.where(external_join_url: nil)
    CSV.open('venues_without_join_url.csv', 'w') do |csv|
      csv << ['Venue Title']
      @venues.each do |venue|
        csv << [venue.title]
      end
    end
  end
end