在我的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肯定。但在删除的情况下,观察者回调不会发生,我将不得不手动执行它们。就像摧毁用户会破坏团队一样,团队又必须更新计数并删除组中的活动。分开处理它们会使代码变得复杂。但那是这样吗? –