Importar CSV em lotes de linhas no Rails?

Estou usando o FasterCSV para importar um arquivo enviado para um modelo e ele está funcionando muito bem para arquivos pequenos. No entanto, quando tento importar um conjunto de dados grande (21.000 linhas), ele leva muito tempo e eu recebo tempos limite do navegador no servidor ativo.

Este é o meu código de trabalho atual:

  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

Eu adoraria usar um processo em segundo plano, mas o usuário precisa ver quantas linhas foram importadas antes de poderem passar para a próxima etapa do sistema.

Então, eu estava pensando que deveria usaração chunking e apenas ler um número menor de linhas, definir um contador, atualizar a visualização com algum tipo de progresso e, em seguida, executar o método novamente usando o contador anterior como ponto inicial.

Não consigo ver como obter o FasterCSV para ler apenas um número definido de linhas e também definir um deslocamento para o ponto inicial.

Alguém sabe como fazer isso? Ou há uma maneira melhor de lidar com isso?

questionAnswers(3)

yourAnswerToTheQuestion