acts_as_tree嵌套JSON散列
问题描述:
我的目标是打印一个json文档,其结构描述在this thread的选定答案中。我只有一个子类别(总共2个,包括root),所以它应该比那里的问题容易一点。我遇到的问题是效率。只有大约20个根类别递归导致我的脚本慢慢行动非常。我的控制器看起来是这样的:acts_as_tree嵌套JSON散列
def categories
render :text => "var categories = #{Category.main.map { |c| c.with_children }.to_json};"
end
而且在类别模式各自的方法:
def with_children
{
:name => self.name,
:id => self.id,
:parent_id => self.parent_id,
:children => self.children.blank? ? nil : self.children
}
end
任何人都可以提供一些建议,以使这一过程更有效率?也许渴望加载或什么?
答
好吧,我假设“main”是Category的命名范围,而且children是has_many关联。 你可以添加其他范围,类别,一个检索一个查询所有类别的孩子......是这样的:
scope :with_children, includes(:children)
这将导致这反而让每一个类别查询,以获得孩子们来说,将只有一个查询来检索您正在加载的所有类别的子项。