2016-03-22 3 views
3

У меня есть приложение, которое имеет Venues и Clients.Rails - Нарушение внешнего ключа PG на DELETE

Каждое место имеет много клиентов:

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 к Ассоциация.

Но я хочу держать клиентов, даже если у них больше нет места.

ответ

7

Вы можете использовать nullify. Он установит venue_id на клиенте на null. Но вам нужно удалить ограничение внешнего ключа из столбца.

has_many :clients, dependent: :nullify 
+0

Отлично! только то, что мне нужно. – goo

Смежные вопросы