0

2つの類似した方法を1つにまとめようとしていますが、いくつか問題があります。

現在:

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を呼び出そうとします(自己は独自のクラスです)。動作するには、次のようなことを行う必要があります。

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