投稿を削除する際外部制約によって、削除できずこれを削除できるようにしたい。
現状大抵の場合は削除ができますが、最初に投稿したものだけが削除できずにいます。
ご助力お願いします。
エラー文 ActiveRecord::StatementInvalid in PostsController#destroy Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails (`hoi-care_development`.`memos`, CONSTRAINT `fk_rails_e8471ffca3` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`)): DELETE FROM `posts` WHERE `posts`.`id` = 32
post.rb class Post < ApplicationRecord has_many :memos, dependent: :destroy belongs_to :user,optional: true validates :user_id, presence: true end
user.rb class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :posts,dependent: :destroy has_many :memos,dependent: :destroy end
posts_controller.rb class PostsController < ApplicationController before_action :authenticate def index @posts = Post.all.order("id DESC") end def new @post = Post.new end def create Post.create(post_params) redirect_to'/' end def show @post = Post.find(params[:id]) @memo = Memo.new @memos = @post.memos end def edit @post = Post.find(params[:id]) end def update @post = Post.find(params[:id]) @post.update(post_params) redirect_to @post end def destroy @post = Post.find(params[:id]) @post.delete end def authenticate redirect_to "/users/sign_in" unless user_signed_in? end private def post_params params.require(:post).permit(:id,:name,:task,:deadline,:user_id) end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。