在 class 方法之外访问变量

Access variables outside a class method

如何在 rails 中访问 class 方法之外的内容?我收到类似未定义方法 do_something_else

的错误
module Thing
  def self.do_something
    do_something_else
  end

  def do_something_else

  end
end

Here's a good reference 显示了 class_methods/singleton_methodsinstance_methods 之间的区别。

在您的情况下,您无法在没有实例的情况下访问实例方法(do_something_else)。 要解决此问题,您必须将模块包含在 class 中并使用该 class.

的实例
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

试试这个

def self.do_something
  Thing.new.do_something_else
end