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?), есть ли способ создать индекс из миграции?
спасибо!
Ответы
Ответ 1
Да! Вы можете выполнить другую миграцию и использовать метод "выполнить"... например:
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
UPDATE:. Вы также можете указать эту строку в config/application.rb:
config.active_record.schema_format = :sql
Вы можете прочитать об этом здесь: http://apidock.com/rails/ActiveRecord/Base/schema_format/class
Ответ 2
В Rails 4 вы можете сделать что-то вроде этого при миграции:
add_index :products, :data, using: :gin