0

在ActiveRecord模型中安裝圓形dependent: :destroy選項是否安全?依賴於循環::在ActiveRecord中銷燬可能嗎?

class Student < ActiveRecord::Base 
    has_one :user, dependent: :destroy 
end 
class User < ActiveRecord::Base 
    belongs_to :student, dependent: :destroy 
end 

如果我刪除user,應該刪除相關student。反之亦然。

回答

0

是的。 AR只會爲單個事務中的每個實體發出刪除查詢。所以,假設用戶有2名學生(a和b)。如果刪除學生a,AR會刪除學生a,導致用戶刪除,導致學生b刪除,最終導致用戶重複刪除。重複刪除(除了小的性能命中之外)不會導致任何類型的錯誤。相反,刪除用戶也將正常工作。

+1

這是在Rails/ActiveRecord中的標準做法嗎? –