ruby on rails - 克隆条目及其关联的模型数据

时间:2011-01-20 15:19:56

标签: ruby-on-rails

我真的需要一些关于克隆/复制条目及其相关数据的帮助。 我有一份提交文件,其中包含提交者的详细信息,注释以及在几个表格中找到的其他相关信息。

我尝试使用以下代码:

  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或任何关联。

有没有办法复制记录及其相关数据?

非常感谢您提供的宝贵帮助:)

1 个答案:

答案 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

无论如何,希望这有帮助。