12

mam po przeprowadzeniu migracjiOkreśla niestandardową nazwę indeksu przy użyciu add_reference

class LinkDoctorsAndSpecializations < ActiveRecord::Migration 
    def up 
    add_reference :doctors, :doctor_specialization, polymorphic: true, index: true 
    end 

    def down 
    remove_reference :doctors, :doctor_specialization, polymorphic: true 
    end 
end 

gdy uruchamiam rake db:migrate otrzymuję błąd

Index name 'index_doctors_on_doctor_specialization_type_and_doctor_specialization_id' on table 'doctors' is too long; the limit is 63 characters

więc jak mogę określić nazwę indeksu przy użyciu add_reference tak, jak określamy w add_index :table, :column, :name => 'index name'

+0

należy zrobić 'add_index: tabela: kolumna: name =>„index name'' –

Odpowiedz

36

Jak commented, do:

add_index :table, :column, name: 'index name' 

Oto documentation. Albo można spróbować to:

class LinkDoctorsAndSpecializations < ActiveRecord::Migration 
    def change 
    add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index name' } 
    end 
end 
3

To by faktycznie działało:

add_index :table, :column, name: 'index name' 

Take a look więcej przykładów.

0

Słyszałem, że najlepszym sposobem, aby rozwiązać ten jest po prostu zostawić go z linii odniesienia add i określić ją ręcznie poniżej podobnie jak w ostatnim wierszu swoje pytanie

add_index :table, :column, :name => 'index name' 
1

Nie chciałbym sugerować, pomijając „add_reference”, ale można pominąć „Index” klucza opcja skrótu, a następnie użyć „add_index”:

add_reference :table, :column 
add_index :table, :column, :name => 'index_table_column' 

Albo, bardziej odpowiednim sposobem byłoby tak:

add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index_doctors_doctor_specialization' } 
+0

to jest duplikatem [odpowiedź] (http://stackoverflow.com/a/303664 60/2767755). –

Powiązane problemy