我正在研究Rails 4中的庫存跟蹤應用程序,目的是保存每個用戶所做交易的日誌。我已經設置了三種模式具有以下關係:Rails 4關係和Postgres外鍵約束
項目:的has_many:交易
用戶:的has_many:交易
交易:belongs_to的:用戶,belongs_to的:項目
用戶ID和項目ID是交易表中的外鍵,用於將用戶和項目與每個交易相關聯。
當我嘗試刪除項目或用戶時,會出現此問題。我希望事務保持不變,所以我沒有啓用依賴銷燬,但Postgres外鍵約束不允許刪除,並出現以下錯誤:
ActiveRecord :: InvalidForeignKey(PG :: ForeignKeyViolation:ERROR:update or刪除表「項」違反了表「交易」
有沒有更好的辦法來建立這種關係,使交易相關聯的用戶和項目外鍵約束「fk_rails_37b3ea4e18」,但之後仍然存在用戶或物品已被刪除?
你試圖強加給數據庫結構的邏輯很腥。讓我們假設你已經刪除了同一個事務的項目和用戶,但是仍然保持了擁有外鍵的事務記錄。你怎麼知道這個事務定義了哪個項目和哪個用戶,現在他們被刪除了。我建議你在項目和用戶表中都有一個「活動」布爾列,並且只要你刪除就標記它們。這將保留數據庫中的所有歷史信息以備將來參考。 – moeabdol
您希望交易在您刪除用戶或物品後指向什麼? – davidrac