2011-01-20 36 views
1

我真的需要一些關於克隆/複製條目及其關聯數據的幫助。 我有一個提交相關的提交者的細節,筆記+其他相關信息在幾個表中找到。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或任何關聯。

是否有任何方法複製記錄及其相關數據?

非常感謝提前爲您寶貴的幫助:)

+0

我想如果你能更好地解釋你想要做什麼,即爲什麼你需要創建一個包含ID的副本,回答你的問題會更容易。 – 2011-01-20 15:24:56

回答

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

無論如何,希望這有助於。