Wie entferne ich eine Zeile aus einer CSV mit Ruby

Wie würden Sie in der folgenden CSV-Datei alle Zeilen entfernen, die das Wort 'true' in der Spalte 'foo' enthalten?

Date,foo,bar
2014/10/31,true,derp
2014/10/31,false,derp

Ich habe eine funktionierende Lösung, allerdings muss ein sekundäres CSV-Objekt erstellt werden.csv_no_foo

@csv = CSV.read(@csvfile, headers: true) #http://bit.ly/1mSlqfA
@headers = CSV.open(@csvfile,'r', :headers => true).read.headers

# Make a new CSV
@csv_no_foo = CSV.new(@headers)

@csv.each do |row|
  # puts row[5]
  if row[@headersHash['foo']] == 'false'
    @csv_no_foo.add_row(row)
  else
    puts "not pushing row #{row}"
  end
end

Ideally, ich würde nur die beleidigende Zeile aus der CSV entfernen, wie folgt:

...
 if row[@headersHash['foo']] == 'false'
    @csv.delete(true) #Doesn't work
...

Betrachtet man die Ruby-Dokumentation, sieht es aus wie dasrow Klasse hat eindelete_if Funktion. Ich bin verwirrt über die Syntax, die diese Funktion erfordert. Gibt es eine Möglichkeit, die Zeile zu entfernen, ohne ein neues CSV-Objekt zu erstellen?

http: //ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Row.html#method-i-eac

Antworten auf die Frage(2)

Ihre Antwort auf die Frage