0

我正在尝试将两种类似的方法组合成一个,但我遇到了一些问题。

目前:

def self.tree
  self.projects.sort_by(&:name).map do |assembly|
    [ assembly, assembly.assemblies.map(&:tree) ]
  end
end

def tree
  [ self, self.assemblies.map(&:tree), self.parts ]
end

我试过把它改成

def self.tree
  self.build_tree( self.projects )
end

def tree
  self.build_tree( [self] )
end

def build_tree( set )
  set.sort_by(&:name).map do |assembly|
    [ assembly, assembly.assemblies.map(&:tree), assembly.parts ]
  end
end

但我只是得到undefined method 'build_tree' for #<Class:0x000000036a5588>

有任何想法吗?

4

1 回答 1

0

您可能将树称为类方法。在这种情况下,此方法尝试调用静态 build_tree(self 是自己的 Class)。为了工作,你需要做这样的事情:

def self.build_tree(set)
   code...
end
于 2012-05-11T20:19:51.257 回答