2009-11-27 73 views
1

牧羊人has_many动物。我试图克隆他们中的一个:Rails has_many关联和ActiveRecord#克隆

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

我得到错误:

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

为什么呢?克隆小车的另一种方式是什么,这样她就可以和一个牧羊人联系在一起并拥有绵羊的属性?

回答

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)