Ich versuche, eine Tempfile zu erstellen mit einigen Benutzer eingegebenen Informationen in einer meiner Modelle:eine Tempfile zu Carrierwave in Rails hochladen
after_create :form_to_csv
def form_to_csv
temp_file = Tempfile.new('test_temp.csv', encoding: 'utf-8')
begin
self.input_data.split('\n').each do |line|
temp_file.write line
end
temp_file.rewind
self.build_input_data_file(file: Rails.root.join("temp_file.path}").open)
ensure
temp_file.close
temp_file.unlink
end
end
Die Formulardaten werden im input_data
Feld als Text gespeichert. Ich kann meine Daten erfolgreich in die Temp-Datei schreiben, aber das Anhängen an das Modell ist umständlich - ich versuche immer, nil
an mein Modell anzuhängen. Mein Hauptproblem ist, dass die Datei, die ich generieren hat einen Pfad wie:
/var/folders/jw/7pjlw_212qd3s4ddfj1zvnpr0000gn/T/test_temp.csv20170502-78762-1eh23ml
und es wird nicht mit Rails.root.join arbeiten und mit dem Befestigungsverfahren vorzuschlagen, bei CarrierWave docs here (Upload aus einer lokalen Datei) .
Haben Sie versucht, das 'temp_fie'-Objekt direkt auf die Option' file' zu übertragen? –