2009-11-27 5 views
1

양치기 has_many 동물. 나는 그들 중 하나를 복제하는 것을 시도하고있다 :레일 has_many 협회와 ActiveRecord # clone

undefined method `stringify_keys!' for #<Sheep:0xb6ce154c> 

이유 :

dolly=shepherd.animals.build(sheep.clone) 

내가 오류가? 그녀가 양치기와 연결되어 양의 속성을 갖도록 돌리를 복제하는 또 다른 방법은 무엇입니까?

답변

9
dolly = shepherd.animals.build(sheep.clone.attributes) 

build은 인수가 속성의 해시가되어야합니다. 그렇지 않으면

dolly = shepherd.animals << sheep.clone 
2

ActiveRecord :: Base 생성자는 매개 변수 해시를 사용합니다. 객체를 전달하는 것은 그렇게하지 않습니다. 따라서 해당 객체의 속성 해시를 쿼리해야합니다.

dolly=shepherd.animals.build(sheep.clone.attributes) 

는 사실 생성자는 id 속성을 무시, 그래서 당신은 멀리 얻을 수 있습니다 :

dolly=shepherd.animals.build(sheep.attributes) 
관련 문제