ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

STIって知ってる?クルマじゃないよ!

今日は研究半分、趣味で作ってるRailsアプリ半分って感じでした。

土曜にしてはめずらしくちゃんと朝起きて集中して作業してた。素晴らしい。

STIって知ってる?

SUBARU TECNICA INTERNATIONALではないです。

Single Table Inheritance、略してSTIというらしく、日本語に直すと単一テーブル継承と言うらしいです。

一つのテーブルに対して、複数のモデルを持たせることができるというもの。(説明がへたくそ)

qiita.com

こちらの記事が大変わかりやすかったです。Musicというモデル、musicsというテーブルがあったときにMusicを継承したJazzとかPopを作り、親テーブルにtypeというカラムを持たせてあげるだけで、あたかもJazzやPopというモデルがあるかのごとく扱うことができるというものらしい。

実際にいろいろとやってみたのですが、一部のサブクラスにだけhas_manyをつけたり、validateを書いたりとかもできるので、テーブルを増やしたくないけど他のカラムの状況に応じてバリデーションを変えたいみたいなときに使うとスマートにできてかなり良さげです。

User作るときとかにroleとかいうカラム作ってその値に応じて処理変えたりとか今まで幾度となくやった気がしますが、これを知っているとかなりいい感じにできそうでマジでいいと思った。

Serializeというのも知った

またRails(というかActiveRecord)の話。

Serializeというのを使うとtext型のカラムに好きな型のデータを突っ込めるらしい。

配列とかを突っ込むとYAMLでカラムに流し込まれるとのこと。検索とかしないデータであれば悪くないのかもしれないですね…。

雑談

Macが帰ってきて捗るぜ。