2
我有3個模型A,B和C. B是A & C之間的連接表。該關聯通過has_many :through
進行。我們應該在連接表模型上編寫dependent:destroy嗎?
我想知道非連接表模型(在我的情況下是A & C)應該具有連接表關聯的dependent: :destroy
還是由rails自動照顧?
HABTM協會的答案相同嗎?
我有3個模型A,B和C. B是A & C之間的連接表。該關聯通過has_many :through
進行。我們應該在連接表模型上編寫dependent:destroy嗎?
我想知道非連接表模型(在我的情況下是A & C)應該具有連接表關聯的dependent: :destroy
還是由rails自動照顧?
HABTM協會的答案相同嗎?
不,因爲您可以在不實例化它們的情況下刪除記錄,這些記錄不會調用依賴銷燬,並且您將留下孤立的記錄。
相反,如果添加了一個外鍵的數據庫將處理刪除,如果你實例化對象與否並不重要。
例如,在遷移,你可以添加
def change
add_foreign_key :as, :bs, on_delete: :cascade
end
或者在創建表的遷移
t.belongs_to :a, foreign_key: { on_delete: :cascade }
事實上,我在控制檯只是測試,無需指定'''取決於:銷燬'''連接表has_many'''關聯,rails似乎負責自動銷燬連接表中相應的數據。 –