2016-04-05 16 views
0

Ich habe eine blob Spalte in einer Tabelle, die ich kenne, stellt PDF-Dokumente. Ich versuche, eine Migration zu schreiben, die die pdf-Dokumente aus diesem blob Feld herausreißt, und speichert die tatsächlichen PDF-Dokumente innerhalb der öffentlichen/Assets. Ich verwende paperclip für Anhänge. HierPDF aus dem Datenbank-Blob-Feld ziehen und innerhalb der öffentlichen/Assets speichern

ist der Fehler Ich erhalte:

StandardError: An error has occurred, all later migrations canceled: "\xC4" from ASCII-8BIT to UTF-8

Hier ist mein Skript:

class AddSomeAttachments < ActiveRecord::Migration 
    def up 

    SomeModel.all.each do |something| 
     if something.data.present? 
     FileUtils.mkdir_p(Rails.root.join('public', 'assets', 'some_models', 'attachment1', "#{something.id}")) 
     end 
    end 

    SomeModel.all.each do |something| 
     if something.data.present? 
     File.open(Rails.root.join('public', 'assets', 'some_models', 'attachment1', "#{something.id}", "#{something.attachment1_file_name}"), "w+") do |file| 
      file << something.data 
     end 
     end 
    end 

    end 

    def down 
    raise "do not migrate down" 
    end 
end 

ich this stack overflow question aussehen, die etwa die gleiche Fehlermeldung gebeten. Ich habe versucht, encoding: UTF-8 am Anfang der Datei hinzuzufügen, aber das hat nichts getan.

Antwort

1

Versuchen Sie eine Binärdatei zu schreiben:

File.open(filename, 'wb') do |file| 
+0

yup, das war das Problem. Vielen Dank! – Neil