12

そのような製品テーブルを作成する移行があります

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.hstore :data

      t.timestamps
    end
  end
end

activerecord-postgres-hstore ページで、テーブルに (SQL で) インデックスを追加します。

CREATE INDEX products_gin_data ON products USING GIN(data);

ただし、その変更は移行によって追跡されません (Postgres 固有なので推測していますか?)、移行内からインデックスを作成する方法はありますか?

ありがとう!

4

2 に答える 2

15

はい!別の移行を行い、「実行」メソッドを使用できます...次のように:

class IndexProductsGinData < ActiveRecord::Migration
  def up
    execute "CREATE INDEX products_gin_data ON products USING GIN(data)"
  end

  def down
    execute "DROP INDEX products_gin_data"
  end
end

更新: config/application.rb で次の行を指定することもできます。

config.active_record.schema_format = :sql

ここでそれについて読むことができます: http://apidock.com/rails/ActiveRecord/Base/schema_format/class

于 2012-05-15T00:12:41.397 に答える