Сломанное ограничение внешнего ключа препятствует удалению - PullRequest
0 голосов
/ 21 января 2019

Я получаю сообщение об ошибке при попытке удалить запись:

[2] pry(main)> d = Deal.last
[3] pry(main)> d.delete                                                                                                                                           
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  update or delete on table "deals" violates foreign key constraint "fk_rails_78857af2ef" on table "origin_airports"

Я нашел ответ на SO, который привел меня к добавлению has_many :origin_airports, dependent: :destroy к моей Deal модели, и это исправленопроблема.

Ну, на прошлой неделе проблема была исправлена, а потом вернулась.Если это имеет значение, это на записи, созданной с прошлой недели, хотя я не могу себе представить, что это что-то значит.Я не думаю, что мой код вообще изменился с тех пор, как я в последний раз мог удалить (просто работал над заполнением БД).

Я попытался добавить это с помощью новой миграции: add_foreign_key :origin_airports, :deals, column: :deal_id, on_delete: :cascade

И это не работает, но, возможно, у меня нет правильного представления о том, какой столбец / таблица находится в вызове add_foreign_key.

1 Ответ

0 голосов
/ 21 января 2019

использовать уничтожить,

d = Deal.last
d.destroy

delete будет удалять только родительскую запись, в то время как если она имеет дочернюю запись, она не удаляется, если вы используете команду уничтожить, то удаляются дочерние и родительские записи, поэтому, если вы удалите родительскую запись без дочерней записи, которая является сиротой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...