1

牧羊has_many动物。我正在尝试克隆其中一个:

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

我得到错误:

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

为什么?克隆多莉的另一种方法是什么,以便她与牧羊人相关联并具有绵羊的属性?

4

2 回答 2

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

build要求参数是属性的散列。除此以外

dolly = shepherd.animals << sheep.clone
于 2009-11-27T15:59:22.217 回答
2

ActiveRecord::Base 构造函数采用参数散列。传递一个对象并不能完全做到这一点。因此,您需要查询相关对象的属性哈希。

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

事实上,构造函数忽略了 id 属性,所以你可以逃脱:

dolly=shepherd.animals.build(sheep.attributes)
于 2009-11-27T15:59:59.903 回答