Rails 5.1に移行する前に作成された既存のモデルへの参照を持つ新しいモデルを作成しようとすると、同様のエラーが発生しました。
エラーメッセージはそれについてあまり明確ではありませんでしたが、私の場合、問題は古いモデルの主キーと新しいモデルの外部キーの間のデータ型の不一致であることが判明しました(MySQLはそれを許可していません)。これは、Rails 5.1以降、すべての主キーと外部キーのデフォルトのデータ型がbigintであるためですが、古いモデルの場合、主キータイプは依然として整数でした。
現在のモデルのすべての主キーと外部キーをbigintに変換することでこれを解決したので、Railsの新しいデフォルトを使用して、それを忘れることができます。
回避策として、古いモデルの主キータイプと一致するように、新しい外部キーに整数タイプを指定することもできます。次のようなもの:
class CreateUserImages < ActiveRecord::Migration[5.1]
def change
create_table :user_images do |t|
t.references :user, type: :integer, foreign_key: true
t.string :url
end
end
end