我使用rails和awesome_nested_set来创建nested_comments (美工有很多sketchbook_comments)。我想有第一个级别是按时间戳排序,这样我们就可以看到最新的评论在顶部,以上的折叠。我希望评论的评论是在ASC时间戳的时间顺序,以便我们可以跟踪对话,在他们创建的顺序。像栈溢出一样,我计划现在只有一个级别的嵌套。
#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我能够在一个DB调用中获得一个关联的所有注释:
artist.sketchbook_comments.order("lft ASC")但似乎所有新的根级注释都被放在树的“末端”或“右侧”(具有比任何先前节点更大的左值)。因此,按左键排序注定了我在任何地方都只能按时间顺序。
有什么建议吗?(我知道我可以通过获取所有根节点的顺序(“lft”),然后在每个级别上运行comment.children.order("lft ASC")来实现这一点,但如果可能的话,我不喜欢多次访问DB。)
发布于 2011-11-01 06:29:19
最后,我添加了一个模型方法,该方法将使用awesome的move_to_left_of(id),以便在插入根级注释时将新节点定位在左侧。
https://stackoverflow.com/questions/7948210
复制相似问题