2016-07-22 33 views
0

我正在关注使用rails简单说明博客应用程序。 在最后部分,而删除它们使用了评论删除belongs_to和has_many协会中的评论

def destroy 
    @article = Article.find(params[:article_id]) 
    @comment = @article.comments.find(params[:id]) 
    @comment.destroy 
    redirect_to article_path(@article) 
end 

我的问题是他们为什么要删除这样的

@comment = @article.comments.find(params[:id]) 

评论时

@comment = Comment.find(params[:id]) 

都返回相同@comment对象。因为id通过评论将是唯一的。为什么他们想要在寻找文章方面采取额外的步骤。 可能是因为首先我们需要检查评论是否属于该文章或不删除之前?或者当设置这种类型的关联时,这种方式是删除方式

+0

没理由,这是一个错误的教程。 – meagar

+0

这是一个预防步骤 –

+0

你不想最终删除属于另一篇文章的评论 –

回答

0

正如书面所述,这没有任何价值。在删除评论之前检查评论是否属于文章是毫无意义的,除非文章用于判断请求用户是否有权执行该操作。

现在,检查评论是否属于给定文章,因为这两个输入都是由用户提供的,并且没有一个被验证属于请求用户,所以向系统添加值。在保证评论属于文章中有固有的价值,这是多余的,增加了不必要的开销和混乱。您应该使用shallow nesting来从其文章中取消评论的显示/编辑/更新/删除路径。