假设我有两个模型A和B
现在,我想通过单击按钮
将A的实例中的一些信息复制到B的实例有办法吗?
答案 0 :(得分:3)
此过程称为克隆对象,其复杂程度取决于您要克隆的信息类型。
如果你只想克隆一个对象的字段,你可以这样做:
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!
但是,如果您还希望克隆旧对象的关联,则需要手动执行此操作。
为了论证,A
has_many
B
个bees
个对象被称为B
,has_many
C
{{ 1}}名为sees
的对象,这可能会有点复杂:
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!