在 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_methods
和 instance_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
如何在 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_methods
和 instance_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