Recebi um erro semelhante ao tentar criar um novo modelo que tenha uma referência a um modelo existente que foi criado antes de migrar para o Rails 5.1.
Embora a mensagem de erro não tenha sido muito clara sobre isso, no meu caso, o problema era a incompatibilidade de tipo de dados entre a chave primária do modelo antigo e a chave estrangeira do novo modelo (o MySQL não permite isso). Foi assim porque desde o Rails 5.1 o tipo de dados padrão de todas as chaves primárias e estrangeiras é bigint, mas para o modelo antigo o tipo de chave primária ainda era inteiro.
Resolvi isso convertendo todas as chaves primárias e estrangeiras dos modelos atuais para bigint, para que eu possa usar os novos padrões do Rails e esquecer isso.
Uma solução alternativa também pode ser especificar o tipo inteiro para as novas chaves estrangeiras para que correspondam ao tipo de chave primária dos modelos antigos. Algo como o seguinte:
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