2009-11-27 72 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)