こんにちは! SmartHR エンジニアの @gongoZ です。 Ruby on Rails 5.2 より、ファイルアップロードおよびそれらのファイルと ActiveRecord との関連付けを容易にする ActiveStorage という仕組みが導入されました。 お手軽で便利な仕組みなのですが、とある問題に遭遇した際「ここ、もう少しシュッと書けないものだろうか…?」と試行錯誤しました。 本記事ではその問題となったケースと、実際に行った解決策について紹介していきたいと思います。 概要 紹介したいこと ActiveStorage のファイルを削除する場合に ActiveRecord トランザクションと組合わせる場合は、 purge よりも detach が相性が良い ActiveStorage::Blob.unattached を活用していく 想定する環境 Ruby on Rails 5.
![ActiveRecord トランザクションと ActiveStorage をちょっとだけ仲良くさせる方法 - SmartHR Tech Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/dc9544e68ac258e3fb1059735dfc4eaa6bf6aa60/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fg%2FgongoZ%2F20180914%2F20180914025549.png)