2013-07-24 13 views
5

Pracuję nad utworzeniem kopii obiektu w szynach i wszystkich powiązanych powiązanych modelach. Ale nie jestem w stanie znaleźć rozwiązania tego problemu. Nie chcę używać żadnego klejnotu, takiego jak Amoeba. Relacje między modelami są właśnie takie.
Tworzenie kopii obiektu i wszystkich powiązanych modeli w szynach

class ClassToCopy 
    has_many :cups 
    has_many :cup_parts, through :cups 
    belongs_to :xyz 
end 

więc chcę trzymać przycisk kopiowania ClassToCopy jak i po kliknięciu na który należy utworzyć nową kopię tego obiektu ze wszystkich stowarzyszeń wraz z nim. Podobnie, jeśli obiekt ClassToCopy ma 10 filiżanek i 4 kubki, należy również utworzyć odpowiednie obiekty tych klas. Próbowałem używać clone i dup (przy użyciu szyn 3.2.x), ale klon nie tworzy nowego obiektu z oryginalnego, a dup nie zezwala na skojarzenia. Dlatego jestem zdezorientowany, co robić.

Odpowiedz

1

Można mógłby zastąpić dup wrócić nowy obiekt i nowy obiekt dla każdego z assosiations, coś jak:

class Thing 
    has_many :cups 

    def dup 
    super.tap do |new_thing| 
     self.cups.each do |cup| 
     new_thing.cups << cup.dup 
     end 
    end 
    end 
end 
Powiązane problemy