4 つの関連テーブルの外部キーから作成される一意のインデックスを追加しようとしています。
add_index :studies,
["user_id", "university_id", "subject_name_id", "subject_type_id"],
:unique => true
データベースのインデックス名の制限により、移行が失敗します。エラー メッセージは次のとおりです。
テーブル 'studies' のインデックス名 'index_studies_on_user_id_and_university_id_and_subject_name_id_and_subject_type_id' が長すぎます。制限は 64 文字です。
これをどう処理すればよいでしょうか? 別のインデックス名を指定できますか?
ベストアンサー1
:name
オプションを提供するadd_index
例:
add_index :studies,
["user_id", "university_id", "subject_name_id", "subject_type_id"],
unique: true,
name: 'my_index'
:index
オプションを使用する場合references
ブロックでは、その値としてcreate_table
同じオプションハッシュを取ります。add_index
t.references :long_name, index: { name: :my_index }