CSV-Datei in mehreren Zeilen in Rails importieren?

Ich verwende FasterCSV, um eine hochgeladene Datei in ein Modell zu importieren, und es funktioniert hervorragend für kleine Dateien. Wenn ich jedoch versuche, einen großen Datensatz (21.000 Zeilen) zu importieren, dauert es Ewigkeiten und auf dem Live-Server treten Browser-Timeouts auf.

Das ist mein aktueller Arbeitscode:

  logcount=0
  Attendee.transaction do
    FCSV.new(file, :headers => true).each do |row|
      row[1] = Date.strptime(row[1], '%m/%d/%Y')
      record = @event.attendees.new(:union_id => row[0], :dob => row[1], :gender => row[2])
      if record.save
        logcount += 1
      end
    end
  end

Ich würde gerne einen Hintergrundprozess verwenden, aber der Benutzer muss erst sehen, wie viele Zeilen importiert wurden, bevor er mit dem nächsten Schritt des Systems fortfahren kann.

Also habe ich mir überlegt, was ich verwenden sollAction-Chunking und lese nur eine kleinere Anzahl von Zeilen, setze einen Zähler, aktualisiere dann die Ansicht mit irgendeiner Art von Fortschritt und führe die Methode erneut unter Verwendung des vorherigen Zählers als Startpunkt aus.

Ich kann nicht scheinen zu sehen, wie man FasterCSV dazu bringt, nur eine bestimmte Anzahl von Zeilen zu lesen und auch einen Versatz für den Startpunkt festzulegen.

Weiß jemand, wie man das macht? Oder gibt es eine bessere Möglichkeit, damit umzugehen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage