Ruby on rails コメント削除機能
コメント機能実装中です。
自分がコメントしたコメントを他のユーザーも削除できてしまう状態になっています。
自分の書いたコメントしか削除できないようにしたいのですが
<% if c.user %>
にしてみましたが制限をかける事ができないです。
他にも<% if c.user_id %>
もしてみましたが変わらずでした。教えて頂きたいです。
よろしくお願い致します。
posts/show.html
<div class="comment-wrapper">
<p>コメント一覧</p>
<% @comments.each do |c| %>
<div class="user-comment">
<% unless c.user.blank? %>
<img src="<%= "/user_images/#{c.user.image_name}" %>">
<% end %>
<%= c.user.name unless c.user.blank? %>
<br />
<%= c.content %>
<% if c.user %>
<%= link_to "削除", comment_path(c), method: :delete, class: "comment-menus" %>
<% end %>
</div>
<br />
class PostsController < ApplicationController
before_action :authenticate_user
before_action :ensure_correct_user, {only: [:edit, :update, :destroy]}
def index
@posts = Post.all.order(created_at: :desc)
end
def show
@post = Post.find_by(id: params[:id])
@user = @post.user
@post = Post.find(params[:id])
@comments = @post.comments
@comment = Comment.new
end
def new
@post = Post.new
end
def create
@post = Post.new(
content: params[:content],
user_id: @current_user.id,
)
if params[:post].present?
@post.video = params[:post][:video]
print params
end
if @post.save
flash[:notice] = "投稿を作成しました"
redirect_to("/posts/index")
else
render("posts/new")
end
end
def edit
@post = Post.find_by(id: params[:id])
end
def update
@post = Post.find_by(id: params[:id])
@post.content = params[:content]
if @post.save
flash[:notice] = "投稿を編集しました"
redirect_to("/posts/index")
else
render("posts/edit")
end
end
def destroy
@post = Post.find_by(id: params[:id])
@post.destroy
flash[:notice] = "投稿を削除しました"
redirect_to("/posts/index")
end
def ensure_correct_user
@post = Post.find_by(id: params[:id])
if @post.user_id != @current_user.id
flash[:notice] = "権限がありません"
redirect_to("/posts/index")
end
end
end
0