介绍ruby / rails对象?

时间:2011-12-30 16:38:12

标签: ruby-on-rails ruby

在控制台中查看Rails中的Active Record对象(例如Foo.find(1))时,会得到如下内容:

=> #<Foo id: 1, name: "Far">

显示数据库中的模型名称和每个活动记录字段,而不显示相同的@instance变量,在本例中为@far =。

如何为常规类对象获取相同的表示形式,而不是返回,其名称定义为attr_accessor:

=> #<Foo:0x00000102fbf970 @name="Far">

我想要的原因是能够在类上查看一组方法的值,而不是仅查看attr_accessor(或attr_reader)方法变量。

是否有定义对象输出的方法?

1 个答案:

答案 0 :(得分:2)

irb中的输出是通过调用Object#inspect完成的,Object#to_s又调用{{3}}。您可以覆盖其中任何一个。我倾向于将inspect视为调试视图,将to_s视为标准用户显示。

class Foo
  attr_accessor :bar, :value

  def to_s
    @value
  end

  def inspect
    "bar: #{@bar}, value: #{@value}"
  end
end

YMMV