Ruby 变量引用是如何工作的?

Ruby 变量引用是如何工作的?,ruby,variables,Ruby,Variables,这是我的代码,没什么特别的: server1 = @volume.pserver puts server1 @volume.pserver = server2 puts server1 我希望存储在server1中的引用本身(而不是引用的属性)始终保持不变,但它会发生变化: #<Pserver:0x00000005bd3b98> #<Pserver:0x0000000662b2a8> # # 这是怎么可能的?好吧,现在我假设这是rspec、factory_girl或

这是我的代码,没什么特别的:

server1 = @volume.pserver
puts server1
@volume.pserver = server2
puts server1
我希望存储在
server1
中的引用本身(而不是引用的属性)始终保持不变,但它会发生变化:

#<Pserver:0x00000005bd3b98>
#<Pserver:0x0000000662b2a8>
#
#

这是怎么可能的?

好吧,现在我假设这是rspec、factory_girl或mongoid中的一个bug。当我改变代码如下,它的工作

server1 = @volume.pserver.reload # no clue why reload is needed here
puts server1
@volume.pserver = server2
puts server1

我仍然不知道真正的原因是什么。我将尝试制作一个简单的项目,重现问题,并将问题发布到所有涉及的三个项目中……

你能告诉我,你如何定义@volume object的
pserver
pserver=
方法吗?忘记我的评论,我删除了它。