我有一個非常痛苦的問題,如果有人可以幫忙?無法複製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