Rails has_many关联和ActiveRecord#clone

时间:2009-11-27 15:37:28

标签: ruby-on-rails ruby activerecord has-many

牧羊人has_many动物。我试图克隆其中一个:

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

我收到错误:

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

为什么呢?什么是克隆小车的另一种方式,以便她与牧羊人联系并拥有绵羊的属性?

2 个答案:

答案 0 :(得分:9)

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

build要求参数是属性的哈希值。否则

dolly = shepherd.animals << sheep.clone

答案 1 :(得分:2)

ActiveRecord :: Base构造函数采用参数哈希。传递一个对象并不是很好。因此,您需要查询相关对象的属性哈希值。

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

实际上构造函数忽略了id属性,所以你可以放弃:

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