我正在做一個Ruby on Rails課程,我正在試圖刪除一個投資組合項目,但它給了我一個錯誤。這是錯誤。如何刪除導軌中的項目?
ActiveRecord::InvalidForeignKey in PortfoliosController#destroy
PG::ForeignKeyViolation: ERROR: update or delete on table "portfolios" violates foreign key constraint "fk_rails_cc5ab4a1c3" on table "technologies" DETAIL: Key (id)=(12) is still referenced from table "technologies". : DELETE FROM "portfolios" WHERE "portfolios"."id" = $1
Extracted source (around line #52):
50
51 # Destroy/delete the record
52 @portfolio_item.destroy
53
54 # Redirect
55 respond_to do |format|`
Rails.root: /home/ubuntu/workspace/DevcampPortfolio/ClonedRepo/Devcamp-Portfolio
Application Trace | Framework Trace | Full Trace app/controllers/portfolios_controller.rb:52:in 'destroy'
Request
Parameters:
{"_method"=>"delete", "authenticity_token"=>"3fGuZqFrTblpS7aQGpfszjN24lSxu6SAr5/JRlLc0RDupDZ7BJKJr6kPnEYHa0/BR7rmTPnN+/i5Ptjb3wCLtw==", "id"=>"12"}
Response
Headers:
None
the code for the place I am in the course
我該如何改變以解決它?
我試圖做你說的,但我無法弄清楚。你能告訴我什麼代碼與依賴:: destroy部分?我是新手,我不太瞭解。 –
在你的portfolio.rb文件中,寫下「has_many technologies,dependent :: destroy」,當你銷燬它時,它會殺死屬於該組合的技術表中的元素 – Maxence
Postgres doesn'就像你殺了一位父母,並讓孩子提及那位父母。位於技術領域的投資組合foreign_key則無所作爲。我認爲與其他數據庫不同,你可以刪除父對象,而不會引用它。 – Maxence