Rails - 将对象转换为字符串时会发生什么?

lam*_*man 4 ruby-on-rails rails-console ruby-on-rails-4

我正在玩Rails控制台.偶然的机会,我意外地将一个对象转换为一个字符串.以下是我的代码.

Rails控制台

user = User.find(1)
user.to_s  # returns <User:0x00000103ada530>
Run Code Online (Sandbox Code Playgroud)

我的问题是,什么是<User:0x00000103ada530>?它是否像用户的ID?<User:0x00000103ada530>我会回来吗?User.find(1)

谢谢

its*_*lay 7

我错了,但是

0x00000103ada530

是内存
中的地址,你调用User.new,它分配内存空间,空间有地址:0x00000103ada530

例如,一个类的2个实例不是同一个地方的存储

class Test
end

t1 = Test.allocate # the same as Test.new, but just allocates a memory space for t1
t2 = Test.allocate
p t1 === t2  # false
p t1.inspect # "#<Test:0x007f17555ff398>"
p t2.inspect # "#<Test:0x007f17555ff370>"
Run Code Online (Sandbox Code Playgroud)

如果您需要#to_s方法用户,您可以设置方法

class User < ActiveRecord::Base
  . . .
  def to_s
   "#{first_name} #{last_name}"
  end
  . . .
end

User.first.to_s # => John Doe
Run Code Online (Sandbox Code Playgroud)