Ich habe einen ähnlichen Fehler erhalten, als ich versuchte, ein neues Modell zu erstellen, das einen Verweis auf ein vorhandenes Modell enthält, das vor der Migration zu Rails 5.1 erstellt wurde.
Obwohl die Fehlermeldung diesbezüglich nicht sehr klar war, stellte sich in meinem Fall heraus, dass das Problem eine Datentyp-Nichtübereinstimmung zwischen dem Primärschlüssel des alten Modells und dem Fremdschlüssel des neuen Modells war (MySQL lässt das nicht zu). Das lag daran, dass seit Rails 5.1 der Standarddatentyp aller Primär- und Fremdschlüssel bigint ist, aber für das alte Modell war der Primärschlüsseltyp immer noch integer.
Ich habe dies gelöst, indem ich alle Primär- und Fremdschlüssel der aktuellen Modelle in bigint konvertiert habe, sodass ich die neuen Standardwerte von Rails verwenden und sie vergessen kann.
Eine Problemumgehung könnte auch darin bestehen, den ganzzahligen Typ für die neuen Fremdschlüssel anzugeben, damit sie mit dem Primärschlüsseltyp der alten Modelle übereinstimmen. Etwas wie das Folgende:
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