こんにちは! SmartHR エンジニアの @gongoZ です。 Ruby on Rails 5.2 より、ファイルアップロードおよびそれらのファイルと ActiveRecord との関連付けを容易にする ActiveStorage という仕組みが導入されました。 お手軽で便利な仕組みなのですが、とある問題に遭遇した際「ここ、もう少しシュッと書けないものだろうか…?」と試行錯誤しました。 本記事ではその問題となったケースと、実際に行った解決策について紹介していきたいと思います。 概要 紹介したいこと ActiveStorage のファイルを削除する場合に ActiveRecord トランザクションと組合わせる場合は、 purge よりも detach が相性が良い ActiveStorage::Blob.unattached を活用していく 想定する環境 Ruby on Rails 5.