我有嵌套在文档中的注释树,使用mongoid embeds_many_recursively这样的:有效的方式来与mongoid显示嵌套树和轨道
Document: {
...
comments: [{
...
updated_at,
child_comments: [{
...
updated_at
child_comments: [{...},{...}],
...},{...}]
...}]
...}]
...}
什么是它传递给视图的最有效的方法按照第一级“comment updated_at”属性排序的方式?
在我这次来到主文档模型内部的时刻:
def flatten_comments
@flat_comments = []
self.comments.order_by([[:updated_at, :desc]]).each do |comment|
flatten_comments_iterator(comment)
end
return @flat_comments
end
def flatten_comments_iterator(comment)
@flat_comments << comment
comment.child_comments.each {|reply| flatten_comments_iterator(reply)}
end
,然后只需在视图中的阵列上进行迭代。
问题是: 1)在递归展平时,订单在某处丢失了,我无法确定在哪里,一步步在纸上看来似乎是按照需要的顺序添加项目,可能有些东西处理类变量作用域和访问。
2)我不确定这是做一个简单的检索最有效的方法。
对于如何有效处理这类任务的建议和经验值得感谢。