我正在尝试将两种类似的方法组合成一个方法,但我遇到了一些问题。
目前:
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>
有什么想法吗?
答案 0 :(得分:0)
您可能将树称为类方法。在这种情况下,此方法尝试调用静态build_tree(self是自己的Class)。工作你需要做那样的事情:
def self.build_tree(set)
code...
end