Jim*_*kar 5 ruby clone ruby-on-rails-3.2
我正在创建rails中对象的副本及其所有相关的关联模型.但我无法找到解决方案.我不想使用任何像Amoeba这样的宝石.模型之间的关系是这样的.
class ClassToCopy
has_many :cups
has_many :cup_parts, through :cups
belongs_to :xyz
end
Run Code Online (Sandbox Code Playgroud)
所以我想保留一个像CopyToCopy这样的按钮,然后单击它就可以创建该对象的新副本以及所有关联.就像ClassToCopy的对象有10个杯子和4个cup_parts一样,那么也应该创建这些类的相应对象.我已尝试使用clone和dup(使用rails 3.2.x),但clone不会从原始对象创建新对象,dup不允许关联.因此我很困惑该做什么.
您可以覆盖dup以返回一个新对象和每个关联的新对象,例如:
class Thing
has_many :cups
def dup
super.tap do |new_thing|
self.cups.each do |cup|
new_thing.cups << cup.dup
end
end
end
end
Run Code Online (Sandbox Code Playgroud)