Closure Tree gem:NoMethodError:未定义的方法`[] ='为零:NilClass

时间:2014-11-24 20:30:35

标签: ruby-on-rails ruby

我正在使用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方法,从根开始按预期工作,返回一个组织树。

1 个答案:

答案 0 :(得分:1)

Org.rebuild!为我解决了这个问题。层次结构表以某种方式被破坏。