O método ActiveRecord integrado para criar índices (
add_index
) não suporta funções ou quaisquer outros recursos mais avançados. Em vez disso, você pode usar execute
para criar o índice com SQL:execute <<-SQL
CREATE INDEX temporary_events_campaign_tinfoid_date_messagetype
ON temporary_events(templateinfoid, campaign, date(gw_out_time), messagetype);
SQL
Observe que o uso de
execute
nas migrações pode ser problemático se você não estiver usando o formato de esquema SQL (config.active_record.schema_format = :sql
). Para obter mais informações, pesquise schema_format
.