我正在关注使用rails简单的博客应用程序。 在删除评论的最后一部分中,他们使用了
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在评论中是唯一的。他们为什么要在寻找文章方面采取额外措施。 可能是因为首先我们需要在删除之前检查评论是否属于该文章?或者是当设置这种关联时删除rails的方法
答案 0 :(得分:0)
正如所写的那样,没有任何价值。在删除评论之前检查评论属于文章是没有意义的,除非该文章用于判断请求用户是否有权执行该操作。
按照目前的情况,检查评论属于给定文章会向系统添加 no 值,因为两个输入都是由用户提供的,并且没有一个被验证属于请求用户。在"保险"中有没有固有价值评论属于文章,它是多余的,增加了不必要的开销和混乱。您应该使用shallow nesting来取消其文章中评论的展示/编辑/更新/删除路径。