我有两张table, 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条答案
按热度按时间w8f9ii691#
第一个猜测是,现有表中的数据与您现在添加的约束不兼容。如果这看起来不是问题,那么在这个错误发生的时候,最好给出更多的上下文。当你试图运行迁移是我的假设。
ps您可能会遇到麻烦,试图使用设置一个主键,这是有语法意义的,也可能会发生变化。如果您将主键设置为id,并通过id将用户链接到帐户,您将有一个更轻松的时间,例如,某天您希望允许用户更改其电子邮件地址。如果您想确保有一个帐户与电子邮件地址相关联,那么可以通过电子邮件字段上的uniq约束轻松实现。