2010-11-29 57 views

回答

3

这个过程被称为克隆一个对象和它的复杂性取决于你想克隆什么样的信息。

如果你只是想克隆一个对象的字段,你会做这样的事情:

old_object = A.find(old_object_id) 
new_object = B.new 

new_object.field_one = old_object.field_one 
new_object.field_two = old_object.field_two 
new_object.save! 

但是,如果你也想复制老对象的协会,你需要做的用手。

地说论据Ahas_many协会B对象叫bees的缘故,并呼吁seesBhas_manyC对象,这有可能会稍微复杂一些:

old_object.bees.each do |bee| 
    new_bee = bee.clone 
    new_bee.sees.each do |see| 
     new_see = see.clone 
     new_see.save! 
    end 
    new_object.bees.push(new_bee) 
end 
new_object.save!