2010-11-29 3 views

Répondre

3

Ce processus est appelé en clonant un objet et sa complexité dépend du type d'information que vous souhaitez cloner.

Si vous voulez simplement cloner un champs d'un objet, vous feriez quelque chose comme ceci:

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! 

Cependant, si vous voulez cloner aussi de l'ancien objet des associations, vous aurez besoin de le faire par la main.

Say à cause de l'argument que A avait une association has_many de B objets appelés bees et Bhas_manyC objets appelés sees, cela pourrait être un peu complexe:

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! 
Questions connexes