我有一个具有 Venues
和 Clients
的应用程序。
每个 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/