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來從其文章中取消評論的顯示/編輯/更新/刪除路徑。