這裏是一個例子...我有一個用戶表引用首選項。首選項表有一個user_id。當我刪除用戶時,我想要刪除首選項表中的記錄。然而,使用的模型belongs_to
和has_many
關聯方法,我得到的數據庫本次活動:Rails的ActiveRecord刪除記錄,關聯的記錄一次刪除一個
preference Load (0.4ms) SELECT `preferences`.* FROM `preferences` WHERE `preferences`.`user_id` = 2
SQL (1.3ms) DELETE FROM `preferences` WHERE `preferences`.`id` = 2
SQL (0.2ms) DELETE FROM `preferences` WHERE `preferences`.`id` = 6
SQL (0.1ms) DELETE FROM `preferences` WHERE `preferences`.`id` = 16
SQL (0.2ms) DELETE FROM `preferences` WHERE `preferences`.`id` = 28
SQL (0.2ms) DELETE FROM `preferences` WHERE `preferences`.`id` = 34
SQL (0.1ms) DELETE FROM `preferences` WHERE `preferences`.`id` = 44
userAccount Load (0.3ms) SELECT `user_accounts`.* FROM `user_accounts` WHERE `user_accounts`.`user_id` = 2
SQL (0.2ms) DELETE FROM `user_accounts` WHERE `user_accounts`.`id` = 2
有沒有一種合適的方式來刪除記錄使用也許DELETE FROM preferences WHERE user_id = xxxx
?我想這樣做,因爲如果首選項有數百萬行,可能是冗長的查詢。
# User model
has_many :preferences, dependent: :destroy
# Preferences model
belongs_to :user
我可以只覆蓋destroy
方法,但我想看看是否有一個更優雅的方式來做到這一點...
您需要逐個處理每個Preference實例,以便在每個首選項記錄上調用destroy回調(其他依賴關係::在首選模型上定義的destroy)。 – MrYoshiji
你的用戶模型有'has_many:users'?這是錯字嗎? – Pavan
對不起,這是一個錯誤的線程,而不是代碼... –