Rails では、あるモデルの属性を別のモデルに引き継ぐ、つまり継承を実現するための仕組みがいくつか用意されています。
そのひとつである STI は比較的古くから存在しているアプローチで、利便性と引き換えに課せられるデメリットも大きいとされています。いっぽう Rails 6.1 で実装された delegated types は、STI を利用した際に負うデメリットのいくつかを解消できるアプローチとなっています。
delegated types の基本的な利用方法やサンプルコードを使った例は API ドキュメントやその他記事で読めますが、生きている Rails アプリケーションにおいて、設計初期ではなく、ある程度開発が進んでから導入したという事例について気になる方も多いのではないでしょうか。初めて delegated types を知った方にとってもそのような情報は有用なはずです。
このセッションでは、hako-console という社内向け Rails アプリケーションで、デプロイ履歴のモデリングに delegated types を導入し、既存テーブルの移行方法や得られた知見、便利さはもちろん、メリットだけではなく落とし穴についても共有します。