我正在使用closure_tree gem。我的模型层次结构基于" Org" (组织)具有整数parent_id。
我已将所有组织设置为parent_id(指向一个存在的ID),但根节点除外,该节点具有null parent_id。
当我打电话给Org.hash_tree时,我得到:
Org Load (1.1ms) SELECT `orgs`.* FROM `orgs` INNER JOIN (
SELECT descendant_id, MAX(generations) as depth
FROM `org_hierarchies`
GROUP BY descendant_id
) AS generation_depth
ON `orgs`.id = generation_depth.descendant_id ORDER BY generation_depth.depth
NoMethodError: undefined method `[]=' for nil:NilClass
from /home/vagrant/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/closure_tree-5.1.1/lib/closure_tree/hash_tree.rb:52:in `block in build_hash_tree'
有关此问题原因的任何想法或有关在哪里查看的提示?
一个简单的递归函数,在每个组织上调用children方法,从根开始按预期工作,返回一个组织树。
答案 0 :(得分:1)
Org.rebuild!为我解决了这个问题。层次结构表以某种方式被破坏。