9

Stworzyłem downloader CSV w kontrolerze jak tenJak pobierać dane CSV za pomocą ActionController :: Live z MongoDB?

format.csv do 
    @records = Model.all 

    headers['Content-Disposition'] = "attachment; filename=\"products.csv\"" 
    headers['Content-Type'] ||= 'text/csv' 
end 

Teraz chcę utworzyć server sent events pobrać plik CSV z tego optymalizacji celowi. Wiem, że mogę to zrobić w Railsach używając ActionController::Live, ale nie mam z tym żadnego doświadczenia.

Czy ktoś mi wyjaśnić, w jaki sposób mogę rekordy

  1. kwerendy partii
  2. Dodaj rekordy do stream
  3. Uchwyt sse od strony przeglądarki
  4. rekordy zapisu do plików CSV

Popraw mnie, jeśli któreś z moich założeń jest błędne. Pomóż mi to zrobić w lepszy sposób. Dzięki.

Odpowiedz

0

Mongoid automatycznie zapytania rekordy w partii (więcej nad here)

Aby dodać rekordy do pliku CSV, należy zrobić coś takiego:

records = MyModel.all 
# By default batch_size is 100, but you can modify it using .batch_size(x) 

result = CSV.generate do |csv| 
    csv << ["attribute1", "attribute2", ...] 
    records.each do |r| 
    csv << [r.attribute1, r.attribute2, ...] 
    end 
end 

send_data result, filename: 'MyCsv.csv' 

Pamiętaj, że send_data jest metodą ActionController !