パパエンジニアのアウトプット帳

30歳に突入した1児のパパエンジニアのブログ

RailsでPostgreSQLのVIEW定義を管理する

初めてちゃんとPostgreSQLのVIEWを使うので、Railsで使う場合の調査。


下記のgemを利用するのが定番みたい。

github.com

このgem使うと何が嬉しいのか

RailsガイドにもCREATE VIEWする方法が書かれてる。

railsguides.jp

gem利用しないとCREATE VIEWする生SQLをexecuteするだけなので

  • migrationのdownを自分で定義する必要がある
    • はじめのCREATE VIEWならdropすればいいけど以降の変更時はその前のやつに戻す必要がある
      • レビュー時に以前のmigrationを参照しないと行けないので手間が増える

マテリアライズドビューを利用するならrefreshの仕組みを用意してくれるのでさらに便利そう。


という感じかな。 あとはおまけとしてエディタでSQLシンタックスハイライトが効くので見やすいくらいですかね。

update_viewとreplace_viewはどう使い分けるのか

コメントにちゃんと書いてくれてるの助かる。

scenic/postgres.rb at 3600a485797fe1dbf30d152cc60b6d2318f04c48 · scenic-views/scenic · GitHub

CREATE OR REPLACE VIEWは、既存のビュースキーマの最後に新しいカラムを追加する場合にのみ許可されています。既存のカラムは、順番を変えたり、削除したり、型を変更することはできません [DeepLでの翻訳より]

なので、基本的にはupdate_view使う感じですね。


あとはTechRachoも目を通しておくと良さげ

techracho.bpsinc.jp