访问类方法之外的变量

时间:2016-06-24 20:41:49

标签: ruby-on-rails mongoid

如何访问rails中类方法之外的内容?我得到一个错误,如未定义的方法do_something_else

module Thing
  def self.do_something
    do_something_else
  end

  def do_something_else

  end
end

2 个答案:

答案 0 :(得分:0)

Here's a good reference显示class_methods/singleton_methodsinstance_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

答案 1 :(得分:0)

试试这个

select exprid [id] from
(select 1 [id],2 [expid]
) s
unpivot (exprid for col in (id,expid)) as t2