Ich habe folgende Migration
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
laufen lasse, erhalte ich den Fehler
Index name 'index_doctors_on_doctor_specialization_type_and_doctor_specialization_id' on table 'doctors' is too long; the limit is 63 characters
wie kann ich den Indexnamen bei Verwendung von add_reference wie in add_index :table, :column, :name => 'index name'
angeben?
Wie ich kommentierte , mache:
add_index :table, :column, name: 'index name'
Hier ist Dokumentation . Oder Sie können dies versuchen:
class LinkDoctorsAndSpecializations < ActiveRecord::Migration
def change
add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index name' }
end
end
Das würde tatsächlich funktionieren:
add_index :table, :column, name: 'index name'
Werfen Sie einen Blick für weitere Beispiele.
Ich würde nicht vorschlagen, "add_reference" wegzulassen, aber Sie könnten den Hash-Schlüssel für die Option "index" weglassen und dann "add_index" verwenden:
add_reference :table, :column
add_index :table, :column, :name => 'index_table_column'
Oder der passendere Weg wäre so:
add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index_doctors_doctor_specialization' }
Ich habe gehört, der beste Weg, dies zu beheben, besteht darin, es einfach aus der Zeile zum Hinzufügen von Verweisen herauszulassen und es wie in der letzten Zeile Ihrer Frage manuell unten anzugeben
add_index :table, :column, :name => 'index name'