Cześć,
jestem w trakcie upgrad-u z Rails 4.2 do 5.1 i podczas deploy-u ( capistrano ) i wykonywania komendy rake db:migrate wywala błąd :
Index name index_old_passwords_on_password_archivable_type_and_password_archivable_id on table old_passwords is too long
.
W pliku migracji mam podane :
add_index(:old_passwords, column: [:password_archivable_type, :password_archivable_id], name: 'idx_password_archivable')
, jak by w ogóle name: nie brało pod uwagi.
Dlaczego ?
hmm… klucz column:
nie ma czegoś takiego w dokumentacji
spróbuj:
def up
unless index_name_exists?(:old_passwords, 'idx_password_archivable')
add_index :old_passwords, [:password_archivable_type, :password_archivable_id], name: 'idx_password_archivable'
end
end
def down
if index_name_exists?(:old_passwords, 'idx_password_archivable')
remove_index :old_passwords, name: 'idx_password_archivable'
end
end
niestety nic to nie zmieniło.
która wersja gema pg, rubiego ?
możesz wstawić całą treść pliku migracji? czy masz w definicji klasy [5.1] jak niżej
class IndexOldPasswords < ActiveRecord::Migration[5.1]
...
references + polymorphic domyślnie tworzy index musisz podać tylko nazwę szczegóły
zamiast moich wpisów możesz zrobić jednolinijkowca - nie testowałem
[...]
t.references :password_archivable, polymorphic: true, index: {name: 'idx_password_archivable'}
[...]
teraz działa Dzięki bardzo.