単一テーブル継承とは
同じカラム設計のテーブルを、一つのテーブルにまとめて、継承することで余計なテーブルを増やさず、DRYなテーブル設計にするというもの。考え方はクラスの継承と同じです。
不使用時と使用時の比較
住所テーブルを作成し、同じ内容でユーザーの住所テーブルと、勤め先の住所テーブルを用意する。
不使用時
それぞれのテーブルとモデルを用意している。
テーブル
Addressesテーブル、WorkAddressesテーブル、UserAddressesテーブル
モデル
Addressモデル、WorkAddressモデル、UserAddressモデル
使用時
Addressesのみ用意して、それを継承したモデルを用意している。
テーブル
Addressesテーブル
モデル
Addressモデル、WorkAddressモデル、UserAddressモデル
app/models/address.rb
class Address < ApplicationRecord
end
app/models/work_address.rb
class WorkAddress < Address
end
app/models/user_address.rb
class UserAddress < Address
end