どうもてぃ。
久しぶりのRailsで少々ハマったのでメモをば。
やりたいこと
ローカルのファイルを読み込んで、carrierwaveに割り当てているカラムに保存したい。
ただそれだけ。
Let's go
まずはファイルの読み込み。
今回はtmp/uploads/
配下にファイルを作っているものとします。
path = Dir.glob(Rails.root.join('tmp', 'uploads', 'test.pdf')) filename = File.basename(path) tempfile = File.open(path)
とりあえずこれで準備はおk
ActionDispatch::Http::Uploadedfileで読み込む
上記を使って読み込みます。
uploaded_file = ActionDispatch::Http::Uploadedfile.new( filename: filename, type: 'application/pdf', tempfile: tempfile ) User.first.update(file: uploaded_file)
User
モデルにUserFileUploader
をマウントしたfile
カラムがあるものとして保存してます。
class User < ApplicationRecord ・ ・ ・ # ↓こういうやつ mount_uploaders :file, UserFileUploader ・ ・ ・ end
終わり
ファイルタイプによってtypeをimage/jpeg
とかに変えれば画像もちゃんと保存できます。
定期的にRailsに触っておかないと忘れちゃいますね。