BETA

Scenic を使って、Railsで RDB の VIEWを使う

投稿日:2020-08-24
最終更新:2020-08-24

こちらの記事を参考にRDBのVIEWを導入しました。
https://techracho.bpsinc.jp/morimorihoge/2019_06_21/76521

VIEWを使う意図

複数の似ているテーブルをまとめて検索・参照したい

という意図で調査・検討を始めました。

そもそものDB設計として、 "似て非なるものは分ける” という思想で設計を始めるとまとめて表示・検索したい時にどうするか?というところに行き当たります。
Rails ですと、STIかとなるのですが、あまりしっくりきませんでした。サブクラスを参照すると必ず typeで絞り込むことや、アプリケーションよりDBのデータの方が長く使われるということを考えると、やはりサブクラスはテーブルを分けておきたいと考えました。
そこで RDBのUNIONを使って参照だけする方式を検討していました。同じ時期に冒頭の Techracho さんの記事を目にして、うまく当てはまりそうだったので、 Scenic でUNION を使った VIEWを作り、 ActiveRecordのモデルで参照する方法で実装をはじめました。

この記事では、上記実装に向けてまず簡単に Scenicで VIEWを作るところのみの説明をします。

Scenicの導入

gem の README を参考に作業して、すんなりできました。
以下要点だけまとめておきます。

  1. Gemfileにgem追加
  2. rails g scenic:model 参照用モデル
  3. db/views/参照用モデル_v01.sql に SELECT文を記述
  4. rake db:migrate

db/views/参照用モデル_v01.sqlの例:

SELECT  
  users.id,  
  users.email  
FROM users  

ここまでで、参照用モデルを使ってDBレコードを参照することができるようになりました。VIEWのバージョン管理もできています。
一応実行例を載せておきます。あまり意味が無い気もしますが、参考までに。

rails console

参照用モデル.first  

終わり

とても簡単な導入記事になってしまいましたが、Qiitaで Scenicを扱う記事がなかったので少しで参考になれば幸いです。
次回は、具体的にアプリケーションのモデルを作成して複数のテーブルを参照できるようにします。

追記:
Twitter @samemuramura にて、Ruby on RailsやWEB開発・グロースハックについての参考情報を配信しています!よろしければぜひフォローください!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@samemuraの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう