2012-05-11 7 views
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>

任意のアイデアを得ますか?

答えて

0

おそらくtreeをクラスメソッドと呼びます。この場合、このメソッドは静的なbuild_tree(selfは独自のクラス)を呼び出そうとします。あなたはそのような何かをする必要があります:

def self.build_tree(set) 
    code... 
end 
+0

+0 Rubyは静的メソッドを持っていません。 –

+0

申し訳ございませんが、Classメソッドです。私の悪い。 –

関連する問題