Сбой генерации модели Rails из-за типа внешнего ключа - PullRequest
1 голос
/ 10 февраля 2020

Я создал модель с помощью следующей команды:

rails g model UserCertification user:references certification:references certification_no:string

, которая ссылается на мою пользовательскую модель user:references.

При переносе db: я получаю следующую ошибку: Причина:

ActiveRecord :: MismatchedForeignKey: Столбец user_id в таблице user_certifications не соответствует столбцу id на users, который имеет тип bigint(20). Чтобы решить эту проблему, измените тип столбца user_id на user_certifications на: bigint. (Например t.bigint :user_id). Исходное сообщение: Mysql2 :: Ошибка: Невозможно добавить ограничение внешнего ключа

Вот моя миграция

class CreateUserCertifications < ActiveRecord::Migration[6.0]
  def change
    create_table :user_certifications do |t|
      t.references :user, null: false, foreign_key: true
      t.references :certification, null: false, foreign_key: true
      t.string :certification_no

      t.timestamps
    end
  end
end

Я попытался установить тип целым числом с t.references :user, null: false, foreign_key: true,type: :integer

Я также удалил модель и переделал и проверил с предыдущими ссылками, но безуспешно. Возможно, у кого-то есть идея?

1 Ответ

3 голосов
/ 10 февраля 2020

Попробуйте установить тип в ссылке для соответствия другой таблице:

t.references(:user, null: false, type: :bigint)

Если это не сработает, попробуйте явно создать внешний ключ в user_certification:

t.bigint :user_id, null: false
t.references(:user)
...