Как я должен ввести свои индексы multicolum, которые содержат функции в schema.rb?
например, это не работает:
add_index "temporary_events", ["templateinfoid", "campaign", "date(gw_out_time)", "messagetype"], :name => "temporary_events_campaign_tinfoid_date_messagetype"
грабли db:test:load
грабли прерываются!
PGError: ОШИБКА: столбец "дата (gw_out_time)" не существует
: CREATE INDEX "temporary_events_campaign_tinfoid_date_messagetype" НА "temporary_events" ("templateinfoid", "кампания", "дата (gw_out_time", "messagetype")
Встроенный метод ActiveRecord для создания индексов ( add_index
) не поддерживает функции или другие дополнительные возможности. Вместо этого вы можете использовать execute
для создания индекса с помощью SQL:
execute <<-SQL
CREATE INDEX temporary_events_campaign_tinfoid_date_messagetype
ON temporary_events(templateinfoid, campaign, date(gw_out_time), messagetype);
SQL
Обратите внимание, что использование execute
в миграциях может быть проблематичным, если вы не используете формат схемы SQL ( config.active_record.schema_format =: sql
). Для получения дополнительной информации выполните поиск по запросу schema_format .