在我的Rails應用程序中。我有我的基本模型 - 用戶。有很多關聯的對象給用戶。Rails:對象破壞性能
Class User
has_many :contents, dependent: destroy
has_many :messages, dependent: destroy
has_many :ratings, dependent: destroy
has_many :groups, dependent: destroy
...
end
當我想從我的系統中刪除用戶(銷燬用戶對象)時,大約需要一分鐘才能銷燬所有關聯的對象。處理這種情況的最佳方式是什麼?這在我腦海
一種方法是:
在delayed_job的破壞:
但直到點用戶對象獲取延遲就業摧毀,該用戶不應該爲別人看到。處理這種情況是通過在用戶模型中標記一個標記來刪除,而不是在結果中提取。但是我也使用獅身人面像,並且需要確保這個用戶不會出現獅身人面像結果。
有沒有更好的方法來處理這種情況?
一種選擇是首先銷燬用戶,並將相關對象的銷燬委託給延遲作業。 – tihom
你考慮過使用'delete'而不是'destroy'嗎?http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html – gabrielhilal
@gabrielhilal肯定。但在刪除的情況下,觀察者回調不會發生,我將不得不手動執行它們。就像摧毀用戶會破壞團隊一樣,團隊又必須更新計數並刪除組中的活動。分開處理它們會使代碼變得複雜。但那是這樣嗎? –