我的应用程序包含Venues
和Clients
。
每个场地都有很多客户:
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
来解决这个问题很简单。
但我想留住客户,即使他们没有更多的场地。
答案 0 :(得分:10)
您可以使用nullify。它会将客户端上的venue_id
设置为null。但是您需要从列中删除外键约束。
has_many :clients, dependent: :nullify