Paparclip で blob を一時ファイルなしに保存したい場合

Rails と PaperClip の組み合わせで、blob を一時ファイル無しで読み込ませる方法。

使ったのは Rails4.x と paperclip (4.2.1)。

結論

# blob はblob形式の文字列が入っている想定。
bin = [blob.strip[1..-1]].pack("H*") # 一度バイナリ文字列に変換
Model.new(
  photo: StringIO.new(bin), # StringIO で渡す
  photo_file_name: 'something_good.jpg' # ファイル名は自分でセット
)

後はよしなに処理してくれました。

ただし、ファイル名が “data” みたいになってしまったので、別途セットする必要があります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする