

【環境】  
ruby 3.1.3  
rails 7.0.4  
PostgreSQL 15.1  
PostGIS 3.3.2

公開期間と緯度経度情報を持つ施設テーブルを、下記のようなmigrationファイルで定義しました。

[code]

    create_table :spots do |t|
      t.string   :name, null: false
      t.st_point :lonlat, geographic: true, srid: 4326, null: false
      t.column   :publish_from, 'timestamp with time zone', null: false
      t.column   :publish_to, 'timestamp with time zone', null: false
    end
    
[/code]

半径nメートル以内の公開期間中の施設を抽出する、という条件のため、このテーブルにGiSTインデックスを含む複合インデックスを設定したいと思っています。  
具体的には、

[code]

    add_index :spots, [ :lonlat, :publish_from, :publish_to ]
    
[/code]

の順番で、:lonlat にのみ using: 'gist' オプションを設定したいのですが、書き方が分からない状態です。  
どのように定義すれば可能でしょうか。

ちなみに不可能な場合、今回は lonlat で絞り込めばある程度件数が少なくなるため最悪 lonlat
の単一インデックスでも良いのですが、そうでない場合にこの条件ですと、どのように定義するのが最適でしょうか。


CC BY-SA 4.0
2022-12-21T09:04:39.977
92938
2022-12-21T09:04:39.977
7352
question
ruby-on-rails
railsのmigrationファイルで複合インデックスの一部にのみオプションを指定したい