RailsのActive Storageを使用して画像を保存している場合に、画像を添付しているレコードを削除すると画像はどうなるのか(消えるのか、残るのか)を知りたかった。
dependent: :destroyのようなoptionがあるのかなと思ったのだけれど、Railsガイドを読んでもよくわからなかった。
Actice Storageのコードをみると、デフォルトでdependent: :purge_laterという値がセットされていた。
def has_many_attached(name, dependent: :purge_later, service: nil, strict_loading: false)
省略
end
purge_laterは、Raildガイドによると、
「Active Jobを介して、関連付けられているモデルと実際のリソースファイルを非同期で破棄します。」 とのことで、
つまり、has_one_attachedとかhas_many_attachedとかで特にoptionを設定しなければ、
添付されてるレコードを削除したときに、非同期処理で添付した画像も削除される。
ここにも書いてあった。