어떤 사람이 도울 수 있다면 매우 괴로운 문제가 있습니다.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를 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