acts_as_commentable_with_threading + учетные записи пользователей

В моем приложении на Rails я интегрировал act_as_commentable_with_threading в свою модель Step. У пользователя есть много проектов, каждый из которых содержит много шагов, и пользователи могут комментировать отдельные шаги. Я реализовал это, добавив act_as_commentable к моей модели step.rb.

Недавно я столкнулся с проблемой, когда пользователь удаляет свою учетную запись. Есть ли что-то встроенное в actions_as_commentable, чтобы разрешить ассоциации между пользователями и комментариями, которые они сделали (например, добавить что-то вроде has_many: comment_threads в файл user.rb). Поскольку у меня нет никаких ассоциаций, я начал сталкиваться с некоторыми проблемами в своем приложении, когда оно пыталось сослаться на комментарий, пользователь которого больше не существует.

1 ответ

Там нет встроенного пути. Тот факт, что они связаны друг с другом, приводит к принятию решения об уничтожении зависимых записей. Лично я думаю, что если у вас есть многопоточное обсуждение и где-то в этом потоке комментарий удален (потому что это пользовательский объект ранее был удален), то все подпотоки этого комментария должны быть удалены. Тем не менее, я делаю 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
Другие вопросы по тегам