0

我有一個Rails電影應用程序。顯然,電影表。電影has_many :comments, :dependent => :destroy和評論belongs_to :movie。 也有評論belongs_to :user因此當新用戶對電影評論時,該評論將顯示在他們的users#show頁面上。Rails依賴銷燬錯誤

如果有用戶評論電影,評論將顯示在他們的頁面上。我也可以去localhost:3000/comments/:id看到評論的節目頁面

現在我的問題是這樣的:

如果我再消滅或刪除影片與評論,該評論實際上本身並沒有被刪除。我仍然可以去localhost:3000/comments/:id,如果我去users/:id/reviews(用戶的評論顯示)我得到一個錯誤,因爲該評論仍然是顯示,仍然屬於一部電影。 所以我得到這種Unable to find Movie with id = 58

的錯誤有沒有在Movies_controller.rbdestroy action一種方式說,當電影被刪除,同時刪除所有評論與movie_id => params[:id]

+0

':dependent'應該是這一行中的一個符號:'has_many:comments,:dependent =>:destroy'。如果這是實際代碼中的拼寫錯誤,請修復並查看是否可以解決問題。此主題可能會幫助您解決有關「MoviesController#destroy」操作的問題:http://stackoverflow.com/questions/3547616/dependent-destroy-isnt-calling-the-destroy-method-before-the-deletion – Powers

+0

My代碼現在不在我身邊,但我認爲在我的模型中冒號已經存在,所以這只是問題而不是代碼。編輯它。 – PMP

回答

1

還有另一種方式來刪除電影評論:

def destroy 
@movie = Movie.find(params[:id]) 
@movie.comments.delete_all 
@movie.destroy 
end 
+0

好,所以這個工作,但它簽署了用戶。所以它通過銷燬電影和評論你也摧毀了用戶會話 – PMP

+0

這個問題不是來自我的代碼,事實上,問題是在別的地方,我懷疑這就是爲什麼你的依賴:: destroy並沒有工作。把你的日誌用於銷燬電影行動。 – rmagnum2002

+0

我並不是暗示這是因爲你的代碼,而只是它觸發它。 https://gist.github.com/mpcoding/b8c95a7103916baba3dd – PMP