2010-11-29 7 views
1

Angenommen mit Ich habe zwei Modelle A und Berstellen, ohne ein Formular in Schienen

Jetzt habe ich durch Klicken auf eine Schaltfläche

Gibt es ein paar Informationen von einer Instanz von A zu einer Instanz von B kopieren möge Art und Weise es zu tun?

Antwort

3

Dieser Prozess wird geklont ein Objekt und die Komplexität davon hängt davon ab, welche Art von Informationen Sie klonen möchten.

Wenn Sie einfach nur ein Objekt der Felder klonen möchten, würden Sie so etwas tun:

old_object = A.find(old_object_id) 
new_object = B.new 

new_object.field_one = old_object.field_one 
new_object.field_two = old_object.field_two 
new_object.save! 

Wenn aber Sie wollen auch die alten Objekts Verbände klonen, müssen Sie das tun, von Hand.

Sprich aus Gründen der Argumentation, dass A genannt bees und Bhas_manyC Objekte sees eine has_many Vereinigung von B Objekte hatte genannt, könnte dies ein wenig komplex:

old_object.bees.each do |bee| 
    new_bee = bee.clone 
    new_bee.sees.each do |see| 
     new_see = see.clone 
     new_see.save! 
    end 
    new_object.bees.push(new_bee) 
end 
new_object.save! 
Verwandte Themen