В моем приложении Rails у меня есть модель комментариев, модель пользовательских моделей и модель сказок. Для каждой публикации в темах у меня есть комментарии, отправленные зарегистрированными пользователями. Проблема здесь в том, что каждый другой зарегистрированный пользователь может удалить комментарии другого пользователя. Мне нужна такая функциональность, что только пользователь, создавший комментарии, может удалить его ,Как разрешить пользователям удалять свои собственные комментарии, а не другие
Мой user.rb здесь
class User < ActiveRecord::Base
has_one :profile, dependent: :destroy
has_many :tales, dependent: :destroy
end
Мой comment.rb здесь
class Comment < ActiveRecord::Base
belongs_to :tale
end
Мой tale.rb здесь
class Tale < ActiveRecord::Base
belongs_to :user
has_many :comments, dependent: :destroy
belongs_to :category
end
Мой routes.rb выглядит следующим образом
Rails.application.routes.draw do
get 'tales/index'
devise_for :users, controllers: { registrations: "registrations" }
resources :profiles
resources :tales do
resources :comments
end
resources :categories
authenticated :user do
root "tales#index"
end
unauthenticated :user do
get "/" => "tales#index"
end
end
Мой комментарий контроллер здесь:
class CommentsController < ApplicationController
before_action :authenticate_user!
def create
@tale = Tale.find(params[:tale_id])
@comment = @tale.comments.create(comment_params)
redirect_to tale_path(@tale)
end
def destroy
@tale = Tale.find(params[:tale_id])
@comment = @tale.comments.find(params[:id])
@comment.destroy
end
private
def comment_params
params.require(:comment).permit(:name, :body, :tale_id)
end
end
Отрывок из моей сказки/показать страницу, чтобы добавлять комментарии здесь:
<div id="comments">
<h2><%= @tale.comments.count %> Comments</h2>
<%= render @tale.comments %>
<h3>Add a comment:</h3>
<%= render "comments/form" %>
</div>
</div>
Мой _comment.html.erb здесь
<div class="comment clearfix">
<div class="comment_content">
<p class="comment_name"><strong><%= comment.name %></strong></p>
<p class="comment_body"><%= comment.body %></p>
<p class="comment_time"><%= time_ago_in_words(comment.created_at) %>
Ago</p>
</div>
<% if user_signed_in? %>
<p><%= link_to 'Delete', [comment.tale, comment], method: :delete, data:
{ confirm: 'Are you sure?' } %></p>
<% end %>
</div>
Я не вижу связи между пользователем и комментариями, и я не делаю этого правильно. Можете ли вы, чтобы кто-то вел меня через это, чтобы я мог сделать это без использования каких-либо драгоценных камней.
Вы должны добавить user_id в таблицу комментариев, а затем только сможете выполнить то же самое. – LHH