0
場景:
#app/model/user.rb
has_many :photos
現在,有時我不得不這樣做如何有效地刪除has_many關聯?
@user.photos.map(&:destroy)
這會將N+1
查詢。有什麼辦法可以使這個可擴展的,所以它在1-2
查詢刪除?我使用Rails 4.0.0
和postgres (PostgreSQL) 9.3.2
#app/model/user.rb
has_many :photos
現在,有時我不得不這樣做如何有效地刪除has_many關聯?
@user.photos.map(&:destroy)
這會將N+1
查詢。有什麼辦法可以使這個可擴展的,所以它在1-2
查詢刪除?我使用Rails 4.0.0
和postgres (PostgreSQL) 9.3.2
如果定義foreign key constraint with ON DELETE CASCADE
,刪除父行,當所有取決於行將被自動刪除。那麼你只需要一個命令。
DELETE FROM users WHERE user_id = $user_id;
只是刪除所有照片和保持用戶:
DELETE FROM photos WHERE user_id = $user_id;
感謝。但我不想刪除'user'記錄。 '@ user.photos.map(&:destroy)'意味着'刪除用戶的所有照片行',但'不是用戶'。當**用戶想要刪除所有這些照片,但不是其整個配置文件時,會出現這種情況** –
@PititoshPiplewar。我懂了。我添加了一個命令。 –
哇,這太簡單,很聰明的把戲。 –