I am using the Marshal module to create a deep clone of an
ActiveRecord object hierarchy… i.e. an object that has_many
children, which at their turn have many children:
In my model file I have:
def deep_clone()
aClone = Marshal::load(Marshal.dump(self))
return aClone
end
This works fine, the returned clone contains the same has_many
hierarchy as the original…
However, it also copies the value of the “id” attribute for each of
the cloned objects in the hierarchy… thus if I were to save it (e.g.
aClone.save), I am effectively writing it to the same database records
Question: what’s the best way to turn these cloned objects in the
hierarchy into a new ActiveRecords that upon save are going to get
created as a set of new records… AND that maintain has_many
relationships between them… is it just a matter of nil’ing out the
id columns ?
Thanks,