2015-02-25 13 views
19

belirtilmesi izin vermez: Postgres için bir isim çok uzun olan bir dizin üretirgöçler: t.references endeksi adı bir göç aşağıdaki gelmiş

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

.

Dizin adını manuel olarak belirtmenin bir yolu var mı (tamsayı sütunu ve dizini ayrı ayrı eklemeden)?

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 

: Aşağıdaki gibi

şey?

cevap

41

Rails code for references göre, bunu yapabilirsiniz, seçenekleri ile index bir Hash sağlayarak, bu nedenle :name adlandırılan gerek bir,: ı Rails seviyorum

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

, çok basit! –

1

longhand bunu belirtin:

t.integer :othermodel_id 
    ... 
end 
add_index :thismodel, :othermodel_id, index_name: 'othermodel_index'