ActiveRecord :: InvalidForeignKey:PG :: ForeignKeyViolation:ERROR:表上的更新或删除违反了外键约束

时间:2018-01-12 21:30:38

标签: ruby-on-rails

SO上有一个非常相似的问题。给出的答案如下:

  

首先删除用户11的评论,或者更改外键以便进行"开启   删除级联"模式 - 删除父级将导致自动   删除子记录

但我认为这是dependent: :destroy的目的。删除记录时,它会删除其关联。

我有以下内容:

class Venue < ApplicationRecord
  has_many :entrees, dependent: :destroy
end

class Entree < ApplicationRecord
  belongs_to :venue
end

我尝试以下方法:

Venue.delete_all
DELETE FROM "venues"
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  update or delete on table "venues" violates foreign key constraint "fk_rails_8fda228aa3" on table "entrees"

我错过了dependent: :destroy的目的吗?此外,如果dependent: :destroy仅用于删除关联,如果它们没有外键约束,那么如何删除具有外键约束的依赖项?是否有Rails CASCADE选项?

2 个答案:

答案 0 :(得分:0)

尝试以下

Venue.destroy_all

这对我有用

Venue.delete_all

不工作

答案 1 :(得分:0)

它的工作尝试这个

ActiveRecord::Base.connection.disable_referential_integrity do
Book.destroy_all
Genre.destroy_all
end