Klonowanie rekordów

Witam mam następujący problem

Mam model Strona który ma wiele kontenerów, potrzebuje zrobić funkcję która sklonuje mi daną stronę wraz z kontenerami.

Próbowałem robić to na kilka sposobów:

[code]cloning_page = Page.find_by_id(data[:page_id])
page = self.pages.new

1#page.boxes = cloning_page.boxes

2#page.boxes.new(cloning_page.boxes)

3#cloning_page.boxes.each do |box|
#page.boxes.new(box)
#end

page.save[/code]
Jak powinienem zrobić to poprawnie, aby po stworzeniu strony skopiować dla niej wszystkie boxy z innej?

z góry dziękuje za odpwoiedzi

Czesc, na szybko.

Jeżeli nie zależy Ci na timestampach created/updated_at (które w poniższym przykładzie również sa klonowane), możesz zrobić coś takiego. Poniższy przykłąd zakłada, że w hashu attributes jest dodatkowy (poza np. title, description) klucz o nazwie page_id.

[code=ruby]class Page < ActiveRecord::Base
has_many :boxes

def self.create_with!(attributes)
cloning_page = Page.find_by_id(attributes.delete(:page_id))
returning Page.create!(attributes) do |new_page|
cloning_page.boxes.each { |box| new_page.boxes.create!(box.attributes) }
end
end
end[/code]

http://blog.defv.be/2008/3/27/activerecord-deepclone-plugin

a może to?