12

Ho la seguente migrazioneSpecificare il nome indice personalizzato quando si utilizza 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 

quando ho eseguito rake db:migrate sto ottenendo l'errore

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

così come posso specificare il nome di indice quando si utilizza add_reference come il modo in cui lo specifichiamo in add_index :table, :column, :name => 'index name'

+0

si dovrebbe fare 'add_index: tavolo,: colonna: name => 'indice name'' –

risposta

36

Come ho commented, fare:

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

Qui è documentation. In alternativa, si può provare questo:

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

Ciò funzionerebbe in realtà:

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

Take a look per ulteriori esempi.

0

ho sentito il modo migliore per risolvere questo problema è quello di lasciare appena fuori della linea di riferimento aggiuntivo e specificare manualmente sotto molto simile nell'ultima riga della tua domanda

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

Non vorrei suggerire lasciando fuori "add_reference", ma si potrebbe lasciare fuori il tasto Opzione hash "indice" e quindi usare "add_index":

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

Oppure, il modo più appropriato sarebbe stato così:

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

questo è un duplicato [risposta] (http://stackoverflow.com/a/303664 60/2767755). –

Problemi correlati