介绍ruby / rails对象?

在控制台中查看Rails中的活动记录对象(例如Foo.find(1))时,您会看到如下所示的内容:

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

其中显示了数据库中的模型名称和每个活动记录字段,而不显示相同的@instance变量,在这种情况下,它将是@ far =。

如何获得常规类对象的相同表示,而该对象则返回,并将名称定义为attr_accessor:

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

我希望这样做的原因是能够查看类的一组方法的值,而不是仅查看attr_accessor(或attr_reader)方法变量。

有没有一种方法可以定义对象的输出是什么?


irb中的输出是通过调用Object#inspect来完成的,后者又调用Object#to_s 。 您可以重写其中之一。 我倾向于将检查视为调试视图,并将to_s视为标准用户显示。

class Foo
  attr_accessor :bar, :value

  def to_s
    @value
  end

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

因人而异

链接地址: http://www.djcxy.com/p/25729.html

上一篇: Presentation of ruby/rails objects?

下一篇: writer and custom reader not working as advertised