如何使用Rails复制对象

时间:2019-05-25 12:33:20

标签: ruby-on-rails deep-copy

我想使用deep_dup复制父对象和子对象,并使用rails 5将其另存为新记录。我一直在寻找一些示例代码来在我的项目中实现它,但到目前为止我什么都找不到。

到目前为止,我已经做到了,但是没有用。

def copy

  @product = Product.find(params[:id])
  @newproduct = @product.clone :include => :productlines
  success = @newproduct.save

  if success && @newproduct.errors.empty?
    redirect_to (edit_product_path(@newproduct))
    flash[:danger] = "Procut copied"
  else
    flash[:danger] = "Procut  cannot be copied"
  end

end
<%= link_to "Clone", copy_product_path(@product), :method => :put %>

有可用的宝石deep_cloneable,但我不了解该文档,不知道如何使用它。

任何人都可以向我展示一种在我的项目中实施此方法的方法吗?

如果有人可以提供帮助,我们将非常感谢。

1 个答案:

答案 0 :(得分:0)

您似乎需要使用deep_clone方法来包括产品线关联(还要确保它不应该是product_lines)。

@new_product = @product.deep_clone include: :productlines