不使用rails中的表单创建

时间:2010-11-29 04:08:11

标签: ruby-on-rails

假设我有两个模型A和B

现在,我想通过单击按钮

将A的实例中的一些信息复制到B的实例

有办法吗?

1 个答案:

答案 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 Bbees个对象被称为Bhas_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!