こんにちは kk8511 です。
マテリアライズドビューを使ったのでその備忘録です。
scenic gem を導入している前提です。
コマンドでファイルを生成する。
$ rails generate scenic:model materialized_view_samples --materialized invoke active_record create app/models/materialized_view_sample.rb invoke rspec create spec/models/materialized_view_sample_spec.rb create db/views/materialized_view_samples_v01.sql create db/migrate/20240905103904_create_materialized_view_samples.rb
手元の環境ではなぜか model にリフレッシュ用のメソッドが追加されなかったので手動で追加しました。
def self.refresh Scenic.database.refresh_materialized_view(table_name, concurrently: false, cascade: false) end
db/views/materialized_view_samples_v01.sql
にマテリアライズドビューのSELECT
文を保存して
マイグレーションを実行する。
$ rails db:migrate
以上。