损坏的外键约束阻止删除

时间:2019-01-21 15:28:19

标签: ruby-on-rails activerecord database-migration

尝试删除记录时出现错误:

[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 :(得分:1)

使用摧毁,

$Pattern = '~mp3:\h+"((https?://)?\S+\.(mp3|ogg))"~im';

删除仅会删除父记录,而如果它有子记录则没有删除,如果使用destroy,它将删除子记录和父记录,因此,如果删除父记录,则没有该孤儿的子记录