2010-01-11 97 views
1

我的目標是打印一個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 

任何人都可以提供一些建議,以使這一過程更有效率?也許渴望加載或什麼?

回答

1

好吧,我假設「main」是Category的命名範圍,而且children是has_many關聯。 你可以添加其他範圍,類別,一個檢索一個查詢所有類別的孩子......是這樣的:

scope :with_children, includes(:children) 

這將導致這反而讓每一個類別查詢,以獲得孩子們來說,將只有一個查詢來檢索您正在加載的所有類別的子項。