我有两个表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
。
我使用的语法是否有问题?
答案 0 :(得分:1)
首先猜测是您现有表中的数据与您现在添加的约束不兼容。如果那似乎不是问题,那么最好提供更多有关此错误发生时间的上下文。当您尝试运行迁移时,这就是我的假设。
PS您可能会因尝试使用集合上的主键而遇到麻烦,该主键在语法上是有意义的,并且可能会发生变化。如果您将主键设置为id,并通过id将用户链接到帐户,那么您将有一个更轻松的时间,例如,某天您希望允许用户更改其电子邮件地址。如果要确保有一个与电子邮件地址关联的帐户,该帐户很容易实现,并且在电子邮件字段上具有唯一约束即可。