前提・実現したいこと
プロフィール画像等の保存先に AWS S3 を指定致しました。接続はうまくいっており、ローカル環境で保存した画像が AWS S3 のバケットに保存されている様子が以下の様に確認できました。
- アップロードした画像を右クリック → 画像アドレスをコピーしたところ、画像アドレスが以下になっていた。
http://localhost:3000/rails/active_storage/blobs/...略
- AWS S3 のバケット > オブジェクトを確認したところ該当ファイルが追加されていた。
モデルに以下の様に dependent: :destroy
を記述する事で以前は関連画像も削除されたように記憶しているのですが、改めて確認した所バケット内の画像が削除されておりませんでした。エラーメッセージは特に表示されておりません。
user.rb
class User < ApplicationRecord has_one_attached :image_name, dependent: :destroy has_one_attached :cover_image_name, dependent: :destroy end
直接関係があるかは分かりませんが、最近行った作業にも言及致します。
Qiita記事を参考に最近アプリ名を変更致しました。旧名のデータベースを drop
してから、rename
と言う gem
を使い新たな名前と共に作り直すと言う内容です。
古い名前のデータベースは削除致しましたが、旧名のデータベースに保存されていたユーザーの関連画像は AWS S3 内に保存されたままです。
また現在名のデータベースにおいてユーザー及びプロフィール画像の作成を試みた所、冒頭で言及致しました通りバケット内に画像が保存されました。しかし User.find(1).destroy
を試みるも、ユーザーはデータベースから消えるもののバケット内には画像が残ったままになる状況です。
ユーザーが削除されると関連画像もバケット内から自動で削除されるよう設定したいです。
どなたかご助言を頂けますと有難いです。
補足情報(FW/ツールのバージョンなど)
ruby 2.6.8p205 (2021-07-07 revision 67951) [x64-mingw32]
RubyGems 3.0.3.1
Rails 5.2.6
mysql Ver 14.14 Distrib 5.7.36, for Win64 (x86_64)
追記
またユーザーがプロフィール画像を 画像A → 画像B に変更した場合も、画像A, 画像Bともに AWS S3 に保存されてしまいます。画像Aのデータが消えて画像Bに差し替わる挙動になって欲しいのですが…。
更に、ユーザーがプロフィール画像を 画像A → 画像A → 画像A… と同じファイルで何度もアップロードした場合も、AWS S3 内でその数だけ 画像A のオブジェクトが追加されます。同一のファイルをアップロードした場合、オブジェクト内で変化は起こらなかったと思うのですが…。
八方塞がりな状況ですので、コメントだけでも頂けますと有難いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。