[Rails] Rails5.1で、migrationする際にreferences使えない

rails5.1でmigrationする際に、外部キーを設定するための、referencesが使えなくなっていました。

その時の対応をしたので、その備忘録。

開発環境

  • mac OS High Sierra バージョン 10.13.4

テーブル構造

userテーブルと、booksテーブルの中間テーブルを作成する以下のmigrationファイルを作成します。

rails5の場合は、これで正常に外部キーを設定することができたのですが、rails5.1からは以下のエラーが出ます。

 

変更点

rails5.1から、idカラムはデフォルトで、bigint型が指定されるようになった。

原因

上記の変更点から考えると、以下の2点が原因でreferencesが使えないと考えられる。

  • referencesで参照したい、usersテーブルのidとbookテーブルのidは、bigint型。
  • referencesで作ろうとしている user_id と book_idはint型。

なので、型違いが起きてしまいエラーが起きる。

解決

解決するのは簡単で、referencesを使わずに、int型で外部キーを作成してあげれば問題ない。

 

まとめ

急に使えなくなってびっくりしましたが、対応は簡単でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA