RailsでPostgreSQLのVIEW定義を管理する
初めてちゃんとPostgreSQLのVIEWを使うので、Railsで使う場合の調査。
下記のgemを利用するのが定番みたい。
このgem使うと何が嬉しいのか
RailsガイドにもCREATE VIEWする方法が書かれてる。
gem利用しないとCREATE VIEWする生SQLをexecuteするだけなので
- migrationのdownを自分で定義する必要がある
- はじめのCREATE VIEWならdropすればいいけど以降の変更時はその前のやつに戻す必要がある
- レビュー時に以前のmigrationを参照しないと行けないので手間が増える
- はじめのCREATE VIEWならdropすればいいけど以降の変更時はその前のやつに戻す必要がある
マテリアライズドビューを利用するならrefreshの仕組みを用意してくれるのでさらに便利そう。
という感じかな。 あとはおまけとしてエディタでSQLのシンタックスハイライトが効くので見やすいくらいですかね。
update_viewとreplace_viewはどう使い分けるのか
コメントにちゃんと書いてくれてるの助かる。
scenic/postgres.rb at 3600a485797fe1dbf30d152cc60b6d2318f04c48 · scenic-views/scenic · GitHub
CREATE OR REPLACE VIEW
は、既存のビュースキーマの最後に新しいカラムを追加する場合にのみ許可されています。既存のカラムは、順番を変えたり、削除したり、型を変更することはできません [DeepLでの翻訳より]
なので、基本的にはupdate_view使う感じですね。
あとはTechRachoも目を通しておくと良さげ