2016-06-24 10 views
0

クラスメソッド外のものにはどのようにしてアクセスするのですか?私はclass_methods/singleton_methodsinstance_methodsの違いを示しクラスメソッドの外部にある変数にアクセスする

module Thing 
    def self.do_something 
    do_something_else 
    end 

    def do_something_else 

    end 
end 
+0

do_somethingは、クラスメソッドであるとThing.do_somethingを呼び出して試してみてください..... do_something_elseはインスタンスメソッドであり、モデルのインスタンスが必要です。 my_thing = Thing.new my_thing.do_something_else – DennisCastro

答えて

0

Here's a good reference do_something_else未定義のメソッドのようなエラーが発生します。

インスタンスがない場合、インスタンスメソッド(do_something_else)にアクセスすることはできません。 これを解決するには、モジュールをクラスに含め、そのクラスのインスタンスを使用する必要があります。

module Thing 
    def self.do_something 
    Logic.new.do_something_else 
    end 

    def do_something_else 
    #perform the logic and actions here 
    end 
end 

class Logic 
    include Thing 
end 

あなたがが違ったと思うしたい場合、ここで私が提案したいものです。

module Thing 
    def self.do_something_else 
    # perform your logic and actions here 
    end 

    def do_something 
    # this is possible because do_something_else is defined on the module Thing 
    Thing.do_something_else 
    end 
end 
0

この

def self.do_something 
    Thing.new.do_something_else 
end 
関連する問題