在控制台中查看Rails中的Active Record对象(例如Foo.find(1))时,会得到如下内容:
=> #<Foo id: 1, name: "Far">
显示数据库中的模型名称和每个活动记录字段,而不显示相同的@instance变量,在本例中为@far =。
如何为常规类对象获取相同的表示形式,而不是返回,其名称定义为attr_accessor:
=> #<Foo:0x00000102fbf970 @name="Far">
我想要的原因是能够在类上查看一组方法的值,而不是仅查看attr_accessor(或attr_reader)方法变量。
是否有定义对象输出的方法?
答案 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