2015-08-22 3 views
0

Моя структура комментариев работает так (я использую act_as_commentable_with_threading).Каков наилучший способ перебора вложенных комментариев?

Комментарий 1 (id: 1) имеет parent_id из nil, потому что он не является ответом на какие-либо комментарии. Комментарий 2 (id: 2) имеет parent_id из 1, потому что это ответ на комментарий 1, у которого есть идентификатор 1. Комментарий 3 (id: 3) имеет parent_id из 2, потому что это ответ на комментарий 2. Комментарий 4 (id: 4) имеет parent_id из 1, потому что это ответ на комментарий 1.

Каков наилучший способ загрузить все ответы для родительского комментария (в этом случае комментарий 1). Я мог бы использовать несколько циклов, но я предполагаю, что это будет действительно неэффективно. Для каждого ответа мне пришлось бы генерировать частичное, чтобы показать этот ответ.

я должен был бы функцию, которая возвращает все дети родительского комментария и дети это дети и т.д.

ответ

1

Загрузка вложенных множеств multitple запросов к базе данных неэффективно. Существуют лучшие способы организации вложенных данных. Посмотрите, как вы могли бы реализовать nested set in SQL или использовать драгоценный камень, например awesome_nested_set, который позволяет загружать все узлы одним запросом.

+0

actions_as_commentable_with_threading использует awesome_nested_set. Как загрузить все узлы одним запросом? Я не мог найти это в документации. – Jill

+0

Нашел. https://github.com/collectiveidea/awesome_nested_set/wiki/Awesome-nested-set-cheat-sheet – Jill

Смежные вопросы