2009-09-26 8 views
1

J'ai besoin d'une solution de clonage universelle pour cloner en profondeur un module avec toutes ses variables d'instance dans Ruby. Je ne peux pas vraiment utiliser la méthode , car elle ne fonctionne pas sur les objets activerecord (ne copie pas le champ id).Solution universelle de clonage d'objets

J'ai également vu une solution de contournement en utilisant marshal dump + marshal load, mais cela ne fonctionne pas sur les objets module et singleton. Est-ce que quelqu'un connaît une solution pour cloner en profondeur un module? Ou peut-être avez-vous une autre solution pour mon vrai problème.

J'ai un module avec des variables d'instance définies et j'ai besoin de le cloner sur un autre module, de modifier des objets dans l'objet cloné, puis de refaire le premier module sans avoir de modifications apportées par le second module.

Répondre

0

Vous pouvez utiliser dup au lieu de clone pour les objets ActiveRecord, mais dup ne copie pas les méthodes singleton (définies sur les objets) + il change l'état figé en un état contaminé.

Comme pour Rails, vous avez également le plugin Deep cloning pour le clonage ActiveRecord.

Questions connexes