Rails克隆记录

时间:2011-01-03 09:23:55

标签: ruby-on-rails clone

我如何克隆记录及其相关记录?

实施例

类别
_ | 产品
_ __
| 产品变体

因此,当我点击一个按钮时,会克隆/复制类别,产品和产品变体。

...谢谢

2 个答案:

答案 0 :(得分:4)

您必须覆盖#clone,以便克隆所有关联,例如

class Category < ActiveRecord::Base
  has_many :products

  alias_method :original_clone, clone

  def clone
    category = self.original_clone
    category.products = self.products.clone
  end
end

...请记住在Product和ProductVariant上做同样的事情。

答案 1 :(得分:0)

我认为你应该从使用“克隆”方法开始。如果我理解正确的话,你的问题是你想要一个递归克隆。坦率地说,我不知道它是否存在一般解决方案,但我认为你可以手工克隆你父亲/儿子链。也许这不是一个优雅的解决方案,但它应该有效。