12

Verwendung habe ich folgende MigrationGeben Sie den Namen benutzerdefinierten Index, wenn 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 

wenn ich rake db:migrate laufe ich die Störung erhalten

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

so, wie ich die Indexnamen angeben kann bei der Verwendung von add_reference wie die Art, wie wir in add_index :table, :column, :name => 'index name'

+0

Sie sollten tun 'add_index: Tisch,: Spalte: name =>‚index name'' –

Antwort

36

Als ich commented, do:

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

Hier ist documentation. Oder Sie können versuchen, diese:

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

angeben Dies würde tatsächlich funktionieren:

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

Take a look für weitere Beispiele.

0

Ich habe die beste Art und Weise zu hören, dies zu beheben ist, es zu verlassen gerade aus der Add Referenzlinie und geben Sie es manuell unten ähnlich wie in der letzten Zeile Ihrer Frage

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

Ich würde nicht vorschlagen, das Weglassen „add_reference“, aber man konnte die „index“ Option Raute-Taste verlassen und dann „add_index“ verwenden:

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

Oder die geeignetere Art und Weise so sein würde:

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

Dies ist ein Duplikat [Antwort] (http://stackoverflow.com/a/303664 60/2767755). –

Verwandte Themen