0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】単一テーブル継承(STI)でDRYな設計をしよう!

Posted at

単一テーブル継承とは

同じカラム設計のテーブルを、一つのテーブルにまとめて、継承することで余計なテーブルを増やさず、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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?