Я создал скаффолд с помощью этой команды (Rails 5.2.1.1):
rails g scaffold EmailAddress value:string:index
email_address_type:references
email_addressable:references{polymorphic}
position:integer
, что привело к созданию этого файла миграции:
class CreateEmailAddresses < ActiveRecord::Migration[5.2]
def change
create_table :email_addresses do |t|
t.string :value
t.references :email_address_type, foreign_key: true
t.references :email_addressable, polymorphic: true
t.integer :position
t.timestamps
end
add_index :email_addresses, :value
end
end
К сожалению, возникает следующая ошибка rails db:migrate
:
Caused by:
ArgumentError: Index name
'index_email_addresses_on_email_addressable_type_and_email_addressa...'
on table 'email_addresses' is too long; the limit is 62 characters
Я понимаю проблему и ошибку.Мне интересно, каково лучшее решение, потому что индекс устанавливается не просто с помощью add_index
, а с помощью некоторой фоновой магии.