【问题标题】:Rails - PG Foreign Key Violation on DELETERails - DELETE 上的 PG 外键冲突
【发布时间】:2016-03-22 08:59:21
【问题描述】:

我有一个包含VenuesClients 的应用程序。

每个场所都有很多客户:

class Venue < ActiveRecord::Base
  has_many :clients
end

当我尝试删除某个场所时,Postgres 抱怨外键约束违规:

PG::ForeignKeyViolation: ERROR: update or delete on table "venues" violates foreign key constraint "fk_rails_3afaf2f5fc" on table "clients" DETAIL: Key (id)=(3) is still referenced from table "clients". : DELETE FROM "venues" WHERE "venues"."id" = $1

dependent: :destroy 添加到关联中即可轻松解决。

但我想留住客户,即使他们没有更多场地。

【问题讨论】:

    标签: ruby-on-rails ruby postgresql ruby-on-rails-4


    【解决方案1】:

    您可以使用无效化。它将客户端上的venue_id 设置为空。但是您需要从列中删除外键约束。

    has_many :clients, dependent: :nullify
    

    【讨论】:

    • 完美!正是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多