Добавить внешний ключ в Rails - PullRequest
       7

Добавить внешний ключ в Rails

0 голосов
/ 13 декабря 2018

У меня есть две таблицы, casino_users и accounts.

Я хочу сделать casino_users.username внешним ключом, который ссылается на accounts.email.

Я пробовал это:

class AddForeignKeyToCASinoUsers < ActiveRecord::Migration[5.2]
  def up
    add_foreign_key :casino_users, :accounts, column: :username, primary_key: "email"
  end 

  def down
    remove_foreign_key :casino_users, column: :username
  end 
end

но выдает ошибку Cannot add or update a child row: a foreign key constraint fails.

Что-то не так с синтаксисом, который я использую?

1 Ответ

0 голосов
/ 14 декабря 2018

Первое предположение: у вас есть данные в существующих таблицах, которые несовместимы с ограничением, которое вы сейчас добавляете.Если это не похоже на проблему, было бы неплохо дать немного больше информации о том, когда произошла эта ошибка.Когда вы пытались запустить миграцию, я предполагаю.

PS Вы можете столкнуться с проблемами, пытаясь использовать набор первичного ключа, который имеет смысловой смысл и также может быть изменен.Если вы оставите первичный ключ в значении id и привязываете пользователей к учетным записям по id, вам будет легче, когда, например, когда-нибудь вы захотите разрешить пользователям менять свой адрес электронной почты.Если вы хотите убедиться, что есть одна учетная запись, связанная с адресом электронной почты, которой достаточно легко достичь с помощью уникального ограничения на поле электронной почты.

...