前提
Rails7で投稿機能を実装しておりました。その中で、投稿を保存する前にアップロードされた画像をリサイズする処理をimage_processingで実装しようとした際に該当エラーが発生しました。私の調べでは思うような解決リソースが得られなかったため、ここに質問させていただきます。
実現したいこと
ActiveStorage を利用してローカルに画像は保存できるようになっております。また、当方HostがWindowsであるため、Docker-toolbox上に立ち上げたUbuntuで開発しております。それにより、 imagemagickとlibvipsをインストールしております。https://qiita.com/chappy_30313331/items/ac0a320c899f9fe1d23a
↑こちらの記事を参考に実装予定だったのですが、次のようなエラーが発生しました。
発生している問題・エラーメッセージ
NoMethodError in PostsController#create undefined method `tempfile' for #<ActiveStorage::Attachment id: nil, name: "images", record_type: "Post", record_id: nil, blob_id: nil, created_at: nil>
該当のソースコード
posts_controller.rb
1 @post.images.each do |image| 2 # image = MiniMagick::Image.source(image) 3 image.tempfile = ImageProcessing::MiniMagick.source(image.tempfile).resize_to_fit(1280, 1280).call 4 end 5 @post.user = current_user 6 @post.save
補足情報(Gem情報)
activestorage (7.0.3.1) image_processing (1.12.2) mini_magick (>= 4.9.5, < 5)
追記
自分はsourceメソッドの引数を正しく設定できれば、tempfileを取得出来るのではないかと考えております。ただ、collectionのオブジェクト, ActiveStorage, MiniMagick の三者の理解が浅く、解決できません。お力添えいただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。