嘿伙计们我正在构建一个rails应用程序(5.1.1),它具有与之相关的帖子和评论。
一切似乎都运行得很好,但当我尝试删除有评论的帖子时,我收到此错误:
''' PG :: ForeignKeyViolation:错误:更新或删除表格"帖子"违反外键约束" fk_rails_5a7b40847a"在桌子上"评论" 详细信息:Key(id)=(3)仍然从表"注释"中引用。 :DELETE FROM"帖子"在哪里"原型"。" id" = $ 1'''"
这个错误似乎非常简单,但我对rails和postgresql来说真的很新,所以我正在寻找一些帮助!
答案 0 :(得分:3)
它取决于您对帖子删除后发表的评论。如果你想在级联上删除它们,例如
post.rb
has_many :comments, dependent: :destroy
答案 1 :(得分:1)
更新Post
模型中的以下行,如下所示
has_many :comments, dependent: :destroy
您必须在dependent: :destroy
模型中提及Post
。因此,当任何post
被post.destroy
删除时,它会删除Comment
模型的所有相关记录。
希望这能解决您的问题
答案 2 :(得分:0)
这是因为你的数据库中有一个约束
我假设表post_id
中的外键comments
必须存在于关联表posts
中。
这当然是因为您使用rails g model Comment post:references
在迁移中指定了外键关系。
您必须指定在删除时如何处理相关模型:
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy # destroy associated comments
end
然后在记录中调用方法post.destroy
而不是post.delete
有关其他选项,请参阅has_many