2015-03-19 67 views
2

假設User有很多Receipt,我希望Receipt的所有實例在父實體User被刪除時銷燬。何處使用dependent::destroy

是什麼寫作的區別是:

(1)在User模型,has_many :receipts, dependent: :destroy

(2)在Receipt模型,belongs_to :user, dependent: :destroy

有什麼建議?

回答

4

(1)在用戶模式的has_many:收據,取決於:摧毀

如果用戶被銷燬,其關聯收據也將被銷燬。

(2)在接到模型,belongs_to的:用戶,取決於:摧毀

如果收到被破壞比其父的用戶將被銷燬,沒有其他相關收益將不被破壞,但會而成爲孤兒。據docs

這取決於:當belongs_to的在 結合使用與另一個類,因爲 一個的has_many關係的潛力,離開孤立的記錄後面不應該被指定選項。

1

(1)在用戶模型中,的has_many:收據,取決於:破壞

在此,如果用戶銷燬然後所有相關聯的收據將被銷燬

(2)在收據模型,belongs_to的:用戶,相關:摧毀

這裏,如果收據被毀則屬於用戶將被銷燬

您可以指定:用以下三種形式相關的選項:

  • :破壞/:destroy_all通過調用其銷燬方法
  • 關聯的對象被銷燬旁邊 該對象:刪除/:DELETE_ALL所有相關聯的對象立即 破壞,而無需調用它們:破壞方法
  • :廢除所有關聯對象的外鍵設置爲NULL,而不 調用它們保存回調