2015-02-25 9 views
19

Mam następujący w migracji:migracje: t.references nie pozwala nazwa indeksu należy określić

create_table :model_with_a_long_name do |t| 
    t.references :other_model_with_an_equally_long_name, index: true 
end 

która produkuje indeksu ze zbyt długie nazwy dla PostgreSQL.

Czy istnieje sposób ręcznego określenia nazwy indeksu (bez dodawania kolumny całkowitej i indeksu osobno)?

Coś jak następuje:

create_table :model_with_a_long_name do |t| 
    t.references :other_model_with_an_equally_long_name, index: true, index_name: 'model_and_other' 
end 

?

Odpowiedz

41

Według Rails code for references, można to zrobić, zapewniając indexHash z opcji, jedno trzeba nazywa :name, więc:

t.references :my_field, index: { name: 'my_index_name' } 
+1

Kocham szynach tak prosty! –

1

Określić go longhand:

t.integer :othermodel_id 
    ... 
end 
add_index :thismodel, :othermodel_id, index_name: 'othermodel_index' 
Powiązane problemy