【问题标题】:How to add foreign key constraint in rails which is not have id column如何在没有 id 列的 Rails 中添加外键约束
【发布时间】:2016-12-11 10:02:27
【问题描述】:

我有一个模型用户,我们将 primary_key 作为 user_id 而不是 id,我知道我应该使用 id 作为 primary_key 但客户希望我们应该使用 user_id 而不是 id。

我有另一个表,我必须将该表与 user_id 相关联

我正在为其他表添加这样的迁移:

t.references :user,             index: true, foreign_key: true

但是当我运行迁移时,我收到与外键约束相关的错误,例如:

ActiveRecord::StatementInvalid: PG::UndefinedColumn: 错误: 外键约束中引用的列“id”不存在 更改表“user_devices”添加约束“fk_rails_e700a96826” 外键(“user_id”) 参考“用户”(“id”)

似乎 rails 默认尝试使用 id 列指向其他表,但我在 users 表中有 user_id。

那么如何添加外键约束,例如:

 ALTER TABLE "user_devices" ADD CONSTRAINT "fk_rails_e700a96826"
FOREIGN KEY ("user_id")
  REFERENCES "users" ("user_id")

使用 Rails 迁移?

【问题讨论】:

    标签: ruby-on-rails migration rails-migrations


    【解决方案1】:

    您可以像这样创建单独的迁移:

    add_column :user_devices,:user_id,:integer
    add_foreign_key :user_devices, :users, column: :user_id, primary_key: "user_id"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 2017-06-10
    • 2014-06-01
    • 2015-02-17
    • 2013-07-12
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多