acts_as_commentable_with_threading +用户帐户

时间:2013-09-17 14:37:21

标签: ruby-on-rails acts-as-commentable

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

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

1 个答案:

答案 0 :(得分: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