Подтвердить что ты не робот

Migrations: t.references не позволяет указывать имя индекса

В миграции есть следующее:

create_table :model_with_a_long_name do |t|
  t.references :other_model_with_an_equally_long_name, index: true
end

Это создает индекс с слишком длинным именем для Postgres.

Есть ли способ вручную указать имя индекса (без добавления целочисленного столбца и индекса отдельно)?

Что-то вроде следующего:

create_table :model_with_a_long_name do |t|
  t.references :other_model_with_an_equally_long_name, index: true, index_name: 'model_and_other'
end

?

4b9b3361

Ответ 1

В соответствии с Код Rails для references вы можете сделать это, предоставив index a Hash с параметрами, которые вам нужно вызвать :name, поэтому:

t.references :my_field, index: { name: 'my_index_name' }

Ответ 2

Указать его вручную:

  t.integer :othermodel_id
  ...
end
add_index :thismodel, :othermodel_id, index_name: 'othermodel_index'