2013-07-24 17 views
5

Bir nesnenin bir kopyasını raylarda ve ilişkili tüm ilişkili modellerinde oluşturmaya çalışıyorum. Ama bunun için bir çözüm bulamıyorum. Amoeba gibi herhangi bir mücevher kullanmak istemiyorum. Modeller arasındaki ilişkiler böyle bir şey.
Bir nesnenin kopyasını ve ilişkili tüm modelleri raylarda oluşturma

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

Yani ben kopya ClassToCopy gibi ve onunla birlikte tüm derneklerle o nesnenin yeni bir kopyasını oluşturması gerektiğini tıklayarak bir düğme devam etmek istiyorum. ClassToCopy nesnesinin 10 kupa ve 4 cup_parts varsa, o zaman bu sınıfların ilgili nesneleri de oluşturulmalıdır. klonu ve dup dup, (raylar 3.2.x kullanarak) kullanmayı denedim, ancak klon, özgün olandan yeni bir nesne oluşturmuyor ve dup, ilişkilendirmelere izin vermiyor. Bundan dolayı ne yapacağımı karıştırıyorum.

cevap

1

Sen assosiations her biri için yeni bir nesne ve yeni bir nesne döndürmek için dup geçersiz olabilir olabilir, gibi bir şey:

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 
İlgili konular