我真的需要一些关于克隆/复制条目及其相关数据的帮助。 我有一份提交文件,其中包含提交者的详细信息,注释以及在几个表格中找到的其他相关信息。
我尝试使用以下代码:
def duplicate1
submission_to_dup = Submission.find(params[:id])
new_submission = Submission.create(submission_to_dup.attributes)
end
def duplicate2
new_submission = Submission.create(Submission.find(params[:id]).clone);
end
但似乎两种方法都做了父对象的浅层副本,没有ID或任何关联。
有没有办法复制记录及其相关数据?
非常感谢您提供的宝贵帮助:)
答案 0 :(得分:1)
在ActiveRecord中复制对象永远不会克隆:id,b / c它是唯一的主键。并且由于该主键应该是该对象的关联中的外键,因此您也将丢失它们。我能想到创建重复记录的唯一方法是执行以下操作:
def duplicate_record
rec = Submission.find(params[:id])
new = Submission.new(:attr => rec.attr)
if new.save
new.update_attributes(:nested_attr => {:attr => rec.nested_attr.attr})
else
something else
end
end
但我想不出你为什么这么想。我花了大部分时间来保留我的数据库的重复记录 out 。
无论如何,希望这有帮助。