我有一个具有 VenuesClients 的应用程序。

每个 field 都有很多客户:

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 来解决很简单。

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

最佳答案

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

has_many :clients, dependent: :nullify

关于ruby-on-rails - Rails - DELETE 上的 PG 外键违规,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36149971/

10-11 07:57