ActiveRecordでRDBのゴミ掃除を都度行う
開発時間が限られる個人開発だと、Railsの有り難みを感じる、この頃です。
さて、ActiveRecord
を使っているとdestroy
時に後片付けをする事が多いかと思います。
通常のhas_many
であれば標準の機能で事足りますが、それ以外にも、依存関係が消えた時に不要になったレコードを一緒に削除したい事はあるのではないでしょうか。
適当な例を挙げると、UserやGroup側にbelongs_to
、Image側にhas_many
があるような場合です。
この場合、使われなくなったImageを消す方法として、以下の2つの方法がパッと考えられます。
- 依存するレコード削除時に毎回調べる方法
- 定期的にバッチでゴミ掃除をする
今回は頻度が多くない想定なので前者で実装します。後者だとsidekiq-cron使ったりすれば良さそうです。
コード
最適化はしていませんが、こんな感じでしょうか。場合によってコード変更が必要そうですが。
コードは煮るなり焼くなりお好きにどうぞ。
記事が気に入ったらチップを送ることができます!
You can give me a cup of coffee :)
Kyash ID: soranoba
Amazon: Wish List
GitHub Sponsor: github.com/sponsors/soranoba
PayPal.Me: paypal.me/soranoba
(Updated: )