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