我對Rails很新。我完成了一篇教程here,該教程將指導您使用它創建博客的步驟。如何限制某人在Rails中刪除自己的評論?
本教程的一部分向您展示瞭如何創建一個允許用戶向文章添加註釋的控制器。我試圖修改它,以便用戶只能刪除自己的評論(而不是其他人的評論)。
問:
是否有修改代碼,這樣,您就可以限制用戶刪除自己的意見的方式?任何資源/教程也歡迎。我真的不知道如何開始。
我覺得正確的做法是在用戶提交評論時以某種方式標記用戶。將該信息保存在數據庫中,然後在有人去刪除評論時檢查該信息。但我想不出一種方法來實現這一點,而不需要爲用戶構建完整的登錄系統。
代碼:
下面是從教程中的代碼:
數據庫遷移:
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :commenter
t.text :body
t.references :article, index: true, foreign_key: true
t.timestamps null: false
end
end
end
控制器:
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
end
private
def comment_params
params.require(:comment).permit(:commenter, :body)
end
end
模板:
<p>
<strong>Title:</strong>
<%= @article.title %>
</p>
<p>
<strong>Text:</strong>
<%= @article.text %>
</p>
<h2>Add a comment:</h2>
<%= form_for([@article, @article.comments.build]) do |f| %>
<p>
<%= f.label :commenter %><br>
<%= f.text_field :commenter %>
</p>
<p>
<%= f.label :body %><br>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
<%= link_to 'Edit', edit_article_path(@article) %> |
<%= link_to 'Back', articles_path %>
刪除批註:
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
end
def destroy
@article = Article.find(params[:article_id])
@comment = @article.comments.find(params[:id])
@comment.destroy
redirect_to article_path(@article)
end
private
def comment_params
params.require(:comment).permit(:commenter, :body)
end
end
我發現了一個類似的問題here,但沒有奏效的答案。
哪裏是你破壞方式或刪除代碼? –
看起來像__代碼爲me_,我找不到任何努力,您嘗試刪除用戶。 –
@Зелёный我編輯了這個問題,使其更清晰。問題是我不知道從哪裏開始。這就是爲什麼我試圖解釋我認爲我能做什麼。所以沒有代碼嘗試。我不想刪除一個用戶,我只是想讓他們刪除他們自己的評論。就像這樣。如果你寫評論,我不應該刪除它(就像你不應該刪除我的)。 – JustBlossom