获取类方法中属性的值

时间:2011-08-02 09:39:54

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems

我有一个类方法,我想访问属性的值

class Run

  attr_accessor :line

  def self.output(options={})
    station_no = options[:station]
    title = options[:title]
    line = self.line
    station = line.stations[station_no-1]
  end
end

在此类方法中,我想访问line属性的值,并且在类方法中,我无法使用self.line访问属性的值。所以请建议我如何访问。

1 个答案:

答案 0 :(得分:5)

类方法在类上下文中执行,line是实例方法,您无法直接从self.output访问它。

您真的想从类方法中访问实例属性吗?也许你需要的是class属性。如果是这样,您可以这样声明:

class Run
  class << self
    attr_accessor :line
  end
end

,并且能够在类方法中获得它的价值。

如果确实需要从类方法访问实例属性 - 将该实例作为参数传递给方法并在其上调用访问器。