我有一個Rails 3.2.8應用程序有如下型號:配置文件和報告。簡介有許多報告和報告中屬於檔案Rails的DELETE_ALL不會刪除
如果我嘗試DELETE_ALL的報告,針對特定的個人資料:
Profile.first.reports.delete_all
而不是刪除報告,它只是將其PROFILE_ID爲零使用SQL類似於:
UPDATE `reports` SET `profile_id` = NULL WHERE `reports`.`profile_id` = 1 AND `reports`.`id` IN (1, 3)
我在指南中找不到任何關於此內容的信息,這是正確的行爲嗎?如果不是會導致什麼呢?
值得一提的是使用destroy_all工作正常,如不使用破壞和刪除單一報告。
編輯(因爲我不能回答我的問題還沒有):
has_many :reports
到:
從切換情景模式的關係
has_many :reports, dependent: :delete_all
有固定這,我猜如果你不指定取決於,它默認爲:nullify,並調用Profile.first.reports.delete_all實際上並沒有刪除,它反而做從屬中指定的是什麼。
除非我失去了一些東西這種行爲是無證的,但至少它的工作原理就像我現在期待。
爲什麼不試試Report.where( 'PROFILE_ID =?',profile.id).destroy_all? – Slawek