私は非常に厄介な問題を抱えています。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 = nilに変更すると、私は知っています。 これはRubyにself.owner = self.previous_ownerを伝えてから、self.previous_ownerをnilに変更することによって起こります。
どうすればこの問題を回避できますか?私はレールコンソールでこれをしようとすると、あまりにも...
奇妙なことに、私はクローンとDUP方法を試してみましたが、私は新しいコピーされたユーザーオブジェクトを持つようにしたいかわからない:
a = 'Foo'
b = a
a = 'New value'
puts a # "New value"
puts b # "Foo"
だから私は、私は何かが欠けていると思います...
所有者のアクセサーメソッドはどのように見えますか?非標準的なことは何ですか?あるいは、ユーザオブジェクトの '@ ='メソッドですか? 'self.owner'ではなく' @ owner'を試してみてください。 'self.owner、self.previous_owner = self.previous_owner、nil'を試してみてください。 – Andy