我有一个非常痛苦的问题,如果有人可以帮忙?无法复制Ruby对象的属性
我有一个类任务与属性,我想作一个爆炸方法(因为我改变了接收器),但我不能够改变对象的属性正确:
def reject!
return nil if self.previous_owner.nil?
self.delegate = false
# Before, owner equal a User object
self.owner = self.previous_owner # previous_owner is also a User object, but different
self.previous_owner = nil
return self if self.save
raise "Can't save object"
end
此次荣获”因为self.owner将是零... 我知道这是因为告诉Ruby self.owner = self.previous_owner,然后改变self.previous_owner为零。
那么我该如何避免这种情况呢?我试图克隆和DUP的方法,但我不知道我想有一个新的复制用户对象...
奇怪的事情太多,如果我尝试这个在轨控制台:
a = 'Foo'
b = a
a = 'New value'
puts a # "New value"
puts b # "Foo"
所以我认为我错过了一些东西...
对于所有者的访问器方法是什么样的 - 在那里发生了什么非标准?或者用户对象中的@ ='方法?试试'@所有者'而不是'self.owner'?试试'self.owner,self.previous_owner = self.previous_owner,nil'? – Andy