Ruby类实例字段隐藏

时间:2014-04-22 00:21:36

标签: ruby

这是一个非常简单的问题,但我无法弄清楚这里发生了什么。这是我的简单模型:

class User
  attr_accessor :first_name, :last_name

end

我可以为新first_name编写last_nameUser字段,当我通过我分配给它的变量调用该用户时,我明白了:

> u
=> #<User>

它没有显示我写的字段。但是当我这样做时(最后和名字):

> u.first_name
=> "John"

为什么在拨打u时没有显示完整的对象?例如=> #<User first_name: 'John' last_name: 'Smith'>。我必须添加到我的模型才能获得输出?提前谢谢。

2 个答案:

答案 0 :(得分:0)

用于将对象转换为String的方法是to_s,用于人类可读调试输出的方法是inspect。某些环境也使用其他方法,例如pry(或某个插件)将pretty_inspect用于&#34;漂亮&#34;人类可读的调试输出。您需要实现这些方法。

示例:

class User
  def inspect
    "#<#{self.class} first_name: '#{first_name}', last_name: '#{last_name}'>"
  end
end

答案 1 :(得分:0)

你正在使用什么红宝石?对我来说它有效:

class Testtt
  attr_accessor :a
end

test = Testtt.new
test.a = 1

> test
=> #<Testtt:0x007fdbca785b60 @a=1>