将PDF从数据库blob字段中拉出并保存在公共/资产中

时间:2016-04-05 14:03:25

标签: ruby-on-rails ruby pdf paperclip

我在表中有一个blob列,我知道它代表pdf文档。我正在尝试编写一个从blob字段中删除pdf文档的迁移,并将实际的pdf文档保存在public / assets中。我使用paperclip作为附件。

以下是我遇到的错误:

  

StandardError:发生错误,以后所有迁移都被取消:" \ xC4"从ASCII-8BIT到UTF-8

这是我的剧本:

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

我确实看了this stack overflow question,询问了同样的错误消息。我确实尝试在文件顶部添加encoding: UTF-8,但没有做任何事情。

1 个答案:

答案 0 :(得分:1)

尝试编写二进制文件:

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