Rails и Postgres Hstore: Можете ли вы добавить индекс в миграцию?

У меня есть миграция, где я создаю таблицу продуктов, как это

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?), Есть ли способ создать индекс из миграции?

Спасибо!

Ответы на вопрос(2)

    add_index :products, :data, using: :gin
 Autodidact25 окт. 2013 г., 09:24
Это не генерирует GIN (данные). Может быть ошибка в генераторе.
 mountriv9922 дек. 2013 г., 04:21
дайте мне это в своей структуре.sql (Rails 4.0.2): CREATE INDEX index_products_on_data ПО продуктам, использующим джин (данные);
Решение Вопроса

.. например, так:

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/clas

 kreek15 мая 2012 г., 20:04
Отлично, спасибо за совет поconfig.active_record.schema_format
 CraigKerstiens16 мая 2012 г., 00:17
Кроме того, вы можете захотеть сделать это: СОЗДАЙТЕ ИНДЕКС СОСТОЯНИЯ products_gin_data В случае продуктов, использующих GIN (данные), это позволит ему не блокировать таблицу при добавлении индекса.
 Cymen03 февр. 2014 г., 20:20
Вы также можете использовать одновременно на капле.

Ваш ответ на вопрос