我在我的Rails項目中使用awesome_nested_set
插件。我有兩個看起來像這樣的模型(簡化版):如何將所有記錄從嵌套集合轉換爲真正的html樹
class Customer < ActiveRecord::Base
has_many :categories
end
class Category < ActiveRecord::Base
belongs_to :customer
# Columns in the categories table: lft, rgt and parent_id
acts_as_nested_set :scope => :customer_id
validates_presence_of :name
# Further validations...
end
數據庫中的樹按預期構建。 parent_id
,lft
和rgt
的所有值都是正確的。該樹有多個根節點(當然允許在awesome_nested_set
中)。
現在,我想要呈現給定客戶的所有類別,如正確排序的樹狀結構:例如嵌套的<ul>
標籤。這不會太困難,但我需要它是有效的(越少的SQL查詢越好)。
更新:找出有可能計算沒有進一步SQL查詢的樹中任何給定節點的孩子數:number_of_children = (node.rgt - node.lft - 1)/2
。這並不能解決問題,但它可能被證明是有幫助的。
這可以工作。你對awesome_nested_set也是對的。我忍不住想知道爲什麼這不是首先嵌入到插件中的。謝謝! – 2009-09-05 18:10:43
忘了提及:關於您的解決方案的要點是,它只需要一個SQL查詢! – 2009-09-05 18:11:58
http://gist.github.com/460814 – 2010-07-02 01:41:55