2015-12-18 158 views
1

我有2個模型,如下所示:Deal and Prize。Rails 4屬於/ has_many關係 - 刪除關聯屬性但保留相關記錄

新政,

belongs_to :prize,   :foreign_key => 'prize_id' 

獎,

has_many :deals, dependent: :destroy 

我的問題很簡單:

如果我刪除了獎,我想保持這將是相關的交易,但刪除與剛剛刪除的此prize_id關聯的Deals對象內的prize_id值。

  • 今天,當使用dependent:destroy時,它刪除整行,即整個記錄相關聯。

  • 我試着刪除'dependent::destroy',但是當我刪除一個獎品時,它確實刪除了獎品,但是它讓Deal的prized_id列中的已刪除獎品的ID號碼成爲問題。

如何刪除一個獎,然後有相關記錄(有關交易對象)保持/維持現有的,只有交易的表內的(問題從prize_id爲nil)改變prize_id?

回答

2
  1. 刪除您dependent: :destroy

  2. 創建和after_destroy回調將在所有相關deals爲零所有prize_id領域。

    after_destroy do self.deals.update_all(prize_id: nil) end


注: 開始Rails的5,與belongs_to協會的任何模型將不允許有一個nil外鍵。

+0

感謝,我要去嘗試,現在 – Mathieu

+0

完美工作,感謝 – Mathieu

+0

將接受答案儘快 – Mathieu

3

你可以只使用dependent: nullify