Ruby on Rails Advent Calendar 2017の24日目の記事です。 SQLアンチパターンやPofEAAで「オブジェクト指向設計で抽出されたスーパークラス・サブクラスから成る継承階層をリレーショナルデータベースのテーブルとして実装するためのパターン」として具象テーブル継承、クラステーブル継承、単一テーブル継承(STI)の3つが紹介されています。 みんなRailsのSTIを誤解してないか!? その中でRailsはSTIはサポートされてますが、その他2つは自分で頑張ってポリモーフィックを実現しないといけないです。 STIを使わない理由としては NULLを許容したくない UpdateではなくInsertでデータ保存のフローを作りたい has_manyなデータはSTIだとjson型などスキーマレスになる あたりでしょうか。 今回はクラステーブル継承を実現する方法を書きます。デ