前提・実現したいこと
Ruby on Railsで記事投稿とその記事に対するコメントができるアプリを作っていますが、外部キーを持つデータのdestroyができずに困っています。
現状コメントがなければ正常に削除ができるのですが、コメントが投稿してある記事を削除しようとするとエラーになります。
発生している問題・エラーメッセージ
ActiveRecord::InvalidForeignKey in PostsController#destroy Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails (`anipho_development`.`comments`, CONSTRAINT `fk_rails_2fd19c0db7` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`))
該当のソースコード
post.rb
ruby
1class Post < ApplicationRecord 2 extend ActiveHash::Associations::ActiveRecordExtensions 3 belongs_to_active_hash :category 4 belongs_to :user 5 has_one_attached :image 6 has_many :comments, dependent: :destroy 7 8 with_options presence: true do 9 validates :image 10 validates :title 11 validates :category_id, numericality: { other_than: 1 , message: "は--以外から選んでください"} 12 end 13end 14
comment.rb
class Comment < ApplicationRecord belongs_to :user belongs_to :post validates :content, presence: true end
commentのマイグレーションファイル
class CreateComments < ActiveRecord::Migration[6.0] def change create_table :comments do |t| t.references :user, foreign_key: true t.references :post, foreign_key: true t.string :content, null: false t.timestamps end end end
試したこと
dependentオプションをpostモデルのcommentテーブルとのアソシエーションの後ろに書いたのですが、同じエラーになります。
補足情報(FW/ツールのバージョンなど)
Mac OS Catalina 10.15.7
ruby 2.6系
rails 6.0系
あなたの回答
tips
プレビュー