2
我有一個自我指涉的模型,生成嵌套層次響應從軌自我指涉協會
class Hierarchy < ActiveRecord::Base
has_many :children, :class_name => "Hierarchy", :foreign_key => 'parent_id'
def descendents
children.map do |child|
[child] + child.descendents
end
end
end
如何構建從模型「層次」這樣的層次樹,
{
"hierarchies": [
{
"level": 1, "id": 14951, "name": "EQUIPMENT", "parent_id": null,
"children": [
{
"level": 2, "id": 15040, "name": "BASKETBALL", "parent_id": 14951,
"children": [
{
"level": 3, "id": 15154, "name": "EYEWEAR", "parent_id": 15040,
"children": [
{
"level": 4, "id": 16617, "name": "OPHTHALMIC", "parent_id": 15154,
"children": []
}
]
},
{
"level": 3, "id": 16417, "name": "OTHER", "parent_id": 15040, "children": []
}
]
}
]
}
]
}
「層次結構」模型的descendents
方法可以迭代和檢索Herarchy模型中的數據直到最後一層。
例子:
render :json => { :hierarchies => [root_hierarchy, root_hierarchy.descendents]}
它返回所有的水平,
{
"hierarchies": [
{
"level": 1, "id": 14951, "name": "EQUIPMENT", "parent_id": null
},
[
[
{
"level": 2, "id": 15040, "name": "BASKETBALL", "parent_id": 14951
},
[
{
"level": 3, "id": 15154, "name": "EYEWEAR", "parent_id": 15040
},
[
{
"level": 4, "id": 16617, "name": "OPHTHALMIC", "parent_id": 15154
}
]
],
[
{
"level": 3, "id": 16417, "name": "OTHER", "parent_id": 15040
}
]
]
]
]
}
的問題是我不能在每次迭代中追加其相關的兒童。 我試過as_json
,includes
方法來追加子對象的父對象,但沒有運氣。