それは素晴らしいです!本当に良い解決策ですね。![]()
アップロードが破棄されたときに、それを参照する投稿がそのまま残っている場合に、投稿内のアップロード参照を削除するのと同じ戦略を逆のシナリオで使用することが理にかなっているかどうか疑問に思います。
以下のようにアップロードを破棄した場合:
Upload.find(123).destroy
もしアップロード 123 が、以下の目的でユーザーによって使用されていた場合:
- プロフィールのカスタムアバター
- プロフィールの背景
- カードの背景
すべての参照は、以下から削除されるようです:
before_destroy (背景/カードバナーのアップロード参照を消去)
after_destroy (アバターのアップロード参照を消去)
もしアップロードIDに関連付けられた投稿IDを使用して、アップロードが破棄されたときにアップロードマークダウンの削除をキューに入れることができれば、手動でアップロードが破棄された場合に、削除されていない投稿内のデッドなアップロード参照を防ぐことができると思います。
理想的には、例えば、1つの投稿に2つのアップロードがあり、そのうちの1つだけが破棄された場合など、破棄されなかったアップロードについてはアップロードマークダウンを保持することです。
例:https://meta.discourse.org/t/legal-compliance-plugin/356331 や Rails CLI 経由で、複数の投稿(引用投稿など)で参照されているアップロードを削除する場合。