Я использую rails и awesome_nested_set для создания nested_comments (у художников есть много sketchbook_comments).Я бы хотел, чтобы 1-й уровень сортировался по меткам времени, чтобы мы могли видеть самые новые комментарии в верхней части, над сгибом.Я хотел бы, чтобы комментарии комментариев были в хронологическом порядке меток времени ASC, чтобы мы могли следить за разговорами в порядке их создания.Как переполнение стека, я планирую иметь только 1 уровень вложенности.
#controller
def create
#create 1st level comment as simple association
@sketchbook_comment = @artist.sketchbook_comments.create(params[:sketchbook_comment])
#if replying to a comment, only then do we nest
if parent = @artist.sketchbook_comments.where(:id => params[:parent_id]).first
@sketchbook_comment.move_to_child_of(parent)
end
redirect_to :back
end
Я могу получить все комментарии для ассоциации в одном вызове БД:
artist.sketchbook_comments.order("lft ASC")
Но кажется, что все новые комментарии корневого уровня помещаются в «конец» или «правую сторону» дерева (имеют большее значение lft, чем любые предыдущие узлы).Поэтому сортировка по левому краю обрекает меня на хронологический порядок везде.
Есть предложения?(Я знаю, что могу добиться этого, извлекая порядок всех корневых узлов («creation_at DESC»), а затем запускаю comment.children.order («lft ASC») на каждом уровне, но я предпочитаю не обращаться к БД несколько раз, если это возможно.)