0

在我的 Rails 应用程序中,我在 Step 模型中集成了acts_as_commentable_with_threading。用户有许多项目,每个项目都包含许多步骤,并且用户可以评论各个步骤。我通过在我的 step.rb 模型中添加acts_as_commentable 来实现这一点。

我最近在用户删除他的帐户时遇到了一个问题。act_as_commentable 中是否内置了一些东西来允许用户和他们所做的评论之间的关联(例如在 user.rb 文件中添加类似 has_many :comment_threads 的东西)。由于我没有任何关联,我开始在我的应用程序中遇到一些问题,它试图引用用户不再存在的评论。

4

1 回答 1

0

没有内置的方式。它们被线程化的事实引发了销毁相关记录的一些决定。就我个人而言,我认为如果您有一个线程对话并且在该线程的某个位置删除了评论(因为它的用户对象之前已被删除),那么应该删除该评论的所有子线程。也就是说,我对用户执行 after_destroy 以销毁所有用户评论和该用户评论的所有子线程:

after_destroy 'delete_comment_threads'


def delete_comment_threads
  comments = Comment.where(user_id: self.id)
  comments.each do |comment|
    Comment.destroy comment.children.map { |c| c.id }
  end
  Comment.destroy comments.map { |c| c.id }
end
于 2013-09-17T17:48:19.967 回答