gcs*_*str 4 ruby postgresql ruby-on-rails ruby-on-rails-4
我有一个应用程序,有Venues和Clients.
每个场地都有很多客户:
class Venue < ActiveRecord::Base
has_many :clients
end
Run Code Online (Sandbox Code Playgroud)
当我试图删除一些场地时,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
Run Code Online (Sandbox Code Playgroud)
通过添加dependent: :destroy到关联来解决这个问题很简单.
但我想留住客户,即使他们没有更多的场地.
bey*_*gan 10
您可以使用nullify.它将venue_id在客户端上设置为null.但是您需要从列中删除外键约束.
has_many :clients, dependent: :nullify
Run Code Online (Sandbox Code Playgroud)