indilog

Ruby/Rails/React/Goなどに関して自分が勉強したことなどを投稿しています

Shrineでdelete_rawプラグイン使用時に元の画像を削除せずにseedデータを作成する

seed_fuを利用し、

Model.seed do |s|
  s.image = File.new(image_path)
end

としてseedデータ登録時にShrineを用いて画像を登録するようにしていたら、 seedデータ作成時にdelete_rawのプラグインを入れていたため、元のファイルが削除される形になってしまっていた

そこでここを参考に Shrine(2.7.0) is destroying my source file, when using it with rspec · Issue #193 · shrinerb/shrine · GitHub

Model.seed do |s|
  s.image = StringIO.new(File.binread(image_path)
end

と奇術師、StringIOのオブジェクトを渡してあげることによって、元のデータを保ったままデータがアップロードできるようになった🎉