Importuj CSV w partiach linii w Railsach?

Używam FasterCSV do zaimportowania przesłanego pliku do modelu i działa on świetnie w przypadku małych plików. Jednak gdy próbuję zaimportować duży zestaw danych (21 000 linii), trwa to całe wieki, a na serwerze na żywo są limity czasu przeglądarki.

To jest mój obecny działający kod:

  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

Chciałbym użyć procesu działającego w tle, ale użytkownik musi sprawdzić, ile linii zostało zaimportowanych, zanim będą mogły przejść do następnego kroku systemu.

Więc myślałem, że powinienem użyćdzielenie akcji Odczytaj tylko mniejszą liczbę linii, ustaw licznik, a następnie zaktualizuj widok z pewnym postępem, a następnie uruchom ponownie metodę, używając poprzedniego licznika jako punktu początkowego.

Nie mogę zobaczyć, jak uzyskać FasterCSV do odczytu tylko określonej liczby linii, a także ustawić przesunięcie punktu początkowego.

Czy ktoś wie jak to zrobić? Czy może jest lepszy sposób na to poradzić?

questionAnswers(3)

yourAnswerToTheQuestion