【Rails】 is too long; the limit is 64 characters って怒られたら

Ruby on Railsで複合indexをつくりたいとき

add_index :friends, %i[user_id target_user_id], unique: true

みたいなことをします。

ちなみに↑は大丈夫なケースですね。

アカン場合

add_index :random_selected_user_accounts_logs, %i[id created_at], unique: true

この場合Railsによって生成される複合index名は 64byteを超えてしまう。すると、表題のエラーでmigrationが失敗します。

index key name(インデックス名)は64byteを超えてはいけない

ということを覚えました。

じゃあどうするか?

単にindex key nameを指定してあげます。

add_index :random_selected_user_accounts_logs, %i[id created_at], unique: true, name: 'index_for_account_created_at'

みたいにすれば、index key nameは index_for_account_created_at で作られます。