2016-06-24 2 views
0

Как получить доступ к вещам вне метода класса в рельсах? Я получаю сообщение об ошибке, как неопределенного метода do_something_elseДоступ к переменным вне метода класса

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, который показывает разницу между class_methods/singleton_methods и instance_methods.

В вашем случае вы не можете получить доступ к экземпляру метода (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 
Смежные вопросы